Как установить Kubernetes на VDS

10 сентября 2019
199
docker
Kubernetes

1. Kubernetes введение

Проект Kubernetes был начат Google и теперь поддерживается многими компаниями, среди которых Microsoft, RedHat, IBM и Docker.

Для установки мы будем использовать облачный VDS с 2Гб оперативной памяти и 2 ядрами CPU (тариф Tiny на хостинге NetAngels).

Зайдите через SSH на сервер от имени пользователя root. Можно подключиться через SSH по нашей статье.

Не смотря на то, что контейнеры в kubernetes поддерживаются разные (CRI-O, Containerd, frakti), мы будем использовать Docker. Установите Docker по статье

2. Kubernetes установка

После установки Docker выполните команды:

apt-get update && apt-get install -y apt-transport-https curl

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 https://apt.kubernetes.io/ kubernetes-xenial main
EOF

apt-get update

apt-get install -y kubelet kubeadm kubectl

apt-mark hold kubelet kubeadm kubectl

Утилиты kubelet, kubeadm и kubectl установлены на ваш сервер. Kubernetes будет использовать Docker для размещения контейнеров.

3. Управление кластером с компьютера

Теперь нужно на компьютере или ноутбуке, с которого вы будете управлять кластером, установить утилиту kubectl. Мы приведем пример для ситуации, когда на этом компьютере установлен Linux Mint 17.

Скачайте kubectl

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

Установите флаг исполнения на этот файл

chmod +x ./kubectl

Переместите kubectl в системный каталог

sudo mv ./kubectl /usr/local/bin/kubectl

Проверьте, что все запускается

kubectl version

Создайте каталог для конфигурации

mkdir ~/.kube

Скачайте с VDS файл с ключами, которые позволят управлять Kubernetes

scp root@ip-vds:/etc/kubernetes/admin.conf ~/.kube/config

Замените ip-vds на IP адрес вашего VDS.

4. Kubernetes настройка

Если бы мы размещали полноценные приложения в Kubernetes, то на этом этапе нужно было бы создать еще несколько VDS и их пометить как узлы Kubernetes (Nodes). А настроенный нами VDS использовался бы только как мастер узел (Master node).

Поскольку мы размещаем все на одном VDS, то нужно сказать Kubernetes, что на нашем единственном VDS тоже можно размещать приложения.

Выполните с вашего компьютера:

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

Далее настроим сеть для работы Kubernetes.

На VDS выполните:

sudo sysctl net.bridge.bridge-nf-call-iptables=1

Также на VDS

mcedit /etc/sysctl.conf

В самый конец файла добавьте строку

net.bridge.bridge-nf-call-iptables=1

Для сохранения нажмите на клавиатуре F2.

Теперь выполните с вашего компьютера:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

5. Установка веб-интерфейса

Выполните с вашего компьютера:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

Создайте файл admin-user.yaml:

mcedit admin-user.yaml

Скопируйте в него содержимое ниже:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

Для сохранения нажмите на клавиатуре F2.

Создайте файл clusterRoleBinding.yaml:

mcedit clusterRoleBinding.yaml

Скопируйте в него содержимое ниже:

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

Для сохранения нажмите на клавиатуре F2.

Выполните с вашего компьютера:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

В выводе будет уникальный ключ, которая начинается с token:. Скопируйте этот ключ. Ключ должен быть в одну строку, без пробелов.

Выполните с вашего компьютера:

kubectl proxy

Осталось открыть в браузере на вашем компьютере:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Появится окно:

Выберите "Token" и вставьте в поле "Enter token" скопированный ранее ключ.

Если все прошло успешно, то вы увидите веб интерфейс для Kubernetes.

Готово! Kubernetes install завершен.

Ответы на вопросы по Kubernetes можно найти в документации.

Мы используем файлы cookie для предоставления наших услуг, а также для аналитики и маркетинга. Продолжая просматривать наш веб-сайт, вы соглашаетесь на использование нами файлов cookie.
ОК