Устанавливаем kubernetes

Выключаем swap

sudo swapoff -a

Ставим из репы

apt-get update && apt-get install -y apt-transport-https \
  && curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
apt-get update \
  && apt-get install -y kubelet kubeadm kubernetes-cni

Проводим инициализацию

kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.128.66 --kubernetes-version stable-1.10

где —pod-network-cidr=10.244.0.0/16 — это сеть контейнеров

—apiserver-advertise-address=10.133.15.28 — наш IP на котором будет висеть API

Назначаем права

kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

Устанавливаем сеть

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Проверка

kubectl -n kube-system get pods

Импортируем переменные

sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf

Разрешаем использование мастера для запуска контейнеров

kubectl taint nodes --all node-role.kubernetes.io/master-

Проверяем работоспособность

kubectl get all --namespace=kube-system

Получаем список запущенных подов (контейнеров)

kubectl get pods

Запускаем WEB

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
cat << EOF > account.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
EOF

kubectl -n kube-system create -f account.yaml
kubectl proxy &

Пробрасываем порт в фоне и подключаемся на локальном хосте к порту 8001

ssh -L 8001:127.0.0.1:8001 -N <host-kubernetes> &

Добавление новых (дополнительных) нод в кластер

На новом сервере выполните следующие команды:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main  
EOF

apt update
apt install -y  docker.io kubelet kubeadm kubernetes-cni ceph-common python

Присоединяем ноду к мастеру:
Нам нужен ключ. Его можно получить на мастере, выполнив команду:

kubeadm token list

Либо, создать его:

kubeadm token create --print-join-command

Строка которая будет использоваться для добавления нод:

kubeadm join 192.168.128.66:6443 --token vysh4i.4uhgt8czjjhq6s3n --discovery-token-ca-cert-hash sha256:b41054cfb0147d466e442515119d7502c2ffe7bb66741d8c0b63bfd3e13417a9
https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Сбросить токен для входа

#!/bin/bash
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')

kubectl config set-credentials kubernetes-admin --token="${TOKEN}"

Открываем удаленный доступ

kubectl -n kube-system edit service kubernetes-dashboard

Меняем type: ClusterIP to type: NodePort

Смотрим порт

kubectl -n kube-system get service kubernetes-dashboard
NAME                   TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   10.101.209.247   <none>        443:32020/TCP   2h

Наш порт 32020, по нему можно получить доступ снаружи

Материалы:

https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard—1.7.X-and-above

https://habr.com/company/southbridge/blog/334846/

https://habr.com/post/348688/

https://habr.com/post/258443/

Docker

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.