Kubernetes: установка

В данном материале будет рассмотрена пошагово тема подготовительной установки kubeadm, kubectl и docker для дальнейшего создания кластера Kubernetes.

Дано: 3 сервера с Centos 7, на которых будут выполняться работы:

  • test-head-1
  • test-node-1
  • test-node-2

Перед началом работ убедиться, что у всех трех машин уникальные mac-адреса и product_uuid:

ip link 
cat /sys/class/dmi/id/product_uuid

Для корректного взаимодействия, в /etc/hosts на всех серверах прописать:

192.168.10.37   test-node-2
192.168.10.38   test-head-1
192.168.10.39   test-node-1

Установить понятные hostname каждому серверу:

systemctl set-hostname test-node-2 ...

Обновить все ОС если настройка происходит на чистой системе:

yum update -y

Перечень необходимых открытых портов для мастера (голова test-head-1):

В firewalld так:

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --reload

Перечень необходимых открытых портов для для узлов (test-node-1\2):

firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --reload

При создании кластера в следующей статье firewalld пришлось отключить, т.к. возникли из-за него трудности.

Далее необходимо отключить Selinux. Это необходимо для того, чтобы разрешить контейнерам доступ к файловой системе хоста, что необходимо, например, для сетей pod:

setenforce 0
sed -i --follow-symlinks 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux

Некоторые пользователи RHEL / CentOS 7 сообщают о проблемах с неправильной маршрутизацией трафика из-за обхода iptables. Для исправления:

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

Проверка загруженного модуля:

lsmod | grep br_netfilter

В случае его отсутствия:

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

И, наконец, для установки добавить репозиторий на все сервера и произвести дальнейшую инсталляцию:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install docker kubelet kubeadm kubectl

kubeadm и Kubernetes требуют особого внимания к версиям при апдейтах, поэтому дальнейшие обновления исключаются. После установки в конец файла, чтобы пакеты не обновлялись и ничего не сломалось, надо добавить:

cat <<EOF >> /etc/yum.repos.d/kubernetes.repo
exclude=kube*
EOF

После автостарт и запуск:

systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet

Если посмотреть статус kubelet, то будет видна ошибка вида:

systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: activating (auto-restart) (Result: exit-code) since Wed 2019-07-03 17:32:05 MSK; 895ms ago
     Docs: https://kubernetes.io/docs/
  Process: 24007 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=255)
 Main PID: 24007 (code=exited, status=255)

Jul 03 17:32:05 test-node-2 systemd[1]: kubelet.service: main process exited, code=exited, status=255/n/a
Jul 03 17:32:05 test-node-2 systemd[1]: Unit kubelet.service entered failed state.
Jul 03 17:32:05 test-node-2 systemd[1]: kubelet.service failed.

Это нормально, т.к. kubelet находится в ожидании команд от kubeadm (настроен авторестарт) и после инициализации мастера (в следующей статье) всё запустится.

На этом установка всего необходимого софта завершена и далее можно приступать к созданию кластера.

Ваш комментарий будет первым

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *