Подготовка кластера Kubernetes

Все команды на главных узлах Kubernetes (k8s) выполняйте от имени пользователя root. Ввиду возможных проблем с неправильной маршрутизацией трафика в обход iptables при использовании ОС RHEL / CentOS 7, убедитесь, что для net.bridge.bridge-nf-call-iptables в конфигурации sysctl установлено значение 1.

Примечание. В дальнейшем описании для главных узлов кластера используются названия kn0, kn1, kn2, для рабочих узлов - kn3, kn4, kn5.

На каждом узле выполните:

  1. От имени пользователя root внесите изменения в system для правильной работы сетей в k8s:

cat >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl –system

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

  1. Добавьте в систему официальный Kubernetes GPG ключ:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

  1. Добавьте Kubernetes репозиторий:

cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/kubernetes-xenial main
EOF

  1. Установите значение /proc/sys/net/bridge/bridge-nf-call-iptables равным 1 для корректной работы CNI (Container Network Interface). Для этого проверьте текущее значение:

cat /proc/sys/net/bridge/bridge-nf-call-iptables

Если текущее значение равно 0, то выполните команду:

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

На узле kn0 от имени пользователя root инициализируйте кластер Kubernetes:

  1. Перейдите в домашнюю директорию пользователя fmpadmin: /home/fmpadmin. Распакуйте архив, содержащий скрипты и yaml-файлы на одном управляющем узле:

% tar –xvzf ./fmp_k8s_v<номер версии>.tar

  1. Перейдите в директорию с распакованными скриптами:

% cd ./ fmp_k8s_v<номер версии>/

  1. Перейдите в поддиректорию rke:

% cd ./rke

  1. Выполните команду:

% ls –lh ./

Будет отображён список файлов в текущей директории:

-rwxr-xr-x 1 root     root       388 Mar 26 20:44 fmpclust.yml
-rw-rw-r-- 1 root     root      1.3K Mar 26 20:48 ReadMe.txt
-rwxr-xr-x 1 root     root      36M Mar 28 14:54 rke

  1. Переместите или скопируйте файл rke в директорию /usr/local/bin/:

% mv ./rke /usr/local/bin/

  1. Установите права на файл rke:

% chmod 755 /usr/local/bin/rke

  1. Отредактируйте содержимое файла fmpclust.yml в соответствии с вашей конфигурацией:

vi ./fmpclust.yuml
nodes:
 - address: m1
   user: ваш пользователь
   role: [controlplane,etcd]
 - address: m2
   user: ваш пользователь
   role: [controlplane,etcd]
 - address: m3
   user: ваш пользователь
   role: [controlplane,etcd]
 - address: w1
   user: ваш пользователь
   role: [worker]
 - address: w2
   user: ваш пользователь
   role: [worker]
 - address: w3
   user: ваш пользователь
   role: [worker]
services:
 kubelet:
   extra_binds:
     - "/lib/modules:/lib/modules"
   extra_args:
     node-status-update-frequency: 10s
 etcd:
   snapshot: true
   creation: 6h
   retention: 24h
 kube-api:
   extra_args:
     default-not-ready-toleration-seconds: 30
     default-unreachable-toleration-seconds: 30
 kube-controller:
   extra_args:
     node-monitor-period: 5s
     node-monitor-grace-period: 40s
     pod-eviction-timeout: 30s
authentication:
   strategy: x509
#    sans:
#      - "10.99.255.254"
network:
 plugin: flannel

Примечание. 10.99.255.254 - общий IP-адрес кластера серверов (если применимо); m1, m2, m3 - имена главных узлов Kubernetes; w1, w2, w3 - имена рабочих узлов Kubernetes; ваш пользователь - пользователь, от имени которого будет осуществляться взаимодействие между узлами (fmpadmin).

  1. Разверните и проинициализируйте кластер:

% rke up --config fmpclust.yml

Операция занимает значительное количество времени и сопровождается подробным выводом в консоль всех этапов развёртывания кластера.

Если всё сделано правильно, то развёртывание кластера пройдет успешно, и в консоль сервера будет выведена строка:

INFO[0103] Finished building Kubernetes cluster successfully

Если возникли ошибки, запустите rke up повторно с ключом debug для вывода подробной информации:

% rke -d up --config fmpclust.yml

  1. После инициализации кластера в текущей директории рядом с файлом fmpclust.yml появится файл kube_config_fmpclust.yml. Переместите или скопируйте его в профиль пользователя. Это позволит пользователю взаимодействовать с кластером. Выполняйте данную операцию от имени пользователя fmpadmin:

% mkdir ~/.kube
% cd ./ fmp_k8s_v<номер версии>/rke/
% cp ./kube_config_fmpclust.yml  ~/.kube/config
% sudo chown -R fmpadmin:fmpadmin /home/fmpadmin/.kube

В результате будет установлен и инициализирован кластер Kubernetes. Проверьте его работу:

  1. Проверьте версию сервера и клиента k8s:

% kubectl version - -short

Пример результата выполнения команды:

Client Version: v1.13.5
Server Version: v1.13.5

  1. Проверьте статус компонентов k8s:

% kubectl get cs

Пример результата выполнения команды:

NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health": "true"}
etcd-1               Healthy   {"health": "true"}
etcd-2               Healthy   {"health": "true"}

После выполнения действий перейдите к установке программного обеспечения Rancher.

См. также:

Подготовка среды для продукта «Форсайт. Мобильная платформа» | Установка Rancher