Выключаем 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/
0 Comment