Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Kubernetes на Ubuntu Server 22.04 LTS.

Kubernetes — открытое программное обеспечение для оркестровки контейнеризированных приложений — автоматизации их развёртывания, масштабирования и координации в условиях кластера.

В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 22.04 LTS.

Подробно о том, как установить Ubuntu Server 20.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 22.04 LTS”.

Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.

Для установки OpenSSH на сервер вы можете воспользоваться командой:

sudo apt install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.

В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.

Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:

Kubernetes Master (Control Plane):

  • TCP порт 6443 - для работы Kubernetes API.
  • TCP порт 2379-2380 - для работы etcd server client API.
  • TCP порт 10250 - для работы Kubelet API.
  • TCP порт 10259 - для работы kube-scheduler.
  • TCP порт 10257 - для работы kube-controller-manager.

Kubernetes Worker:

  • TCP порт 0250 - для работы Kubelet API.
  • TCP порт 30000-32767 - для работы NodePort Services.

Мы будем рассматривать установку одного сервера с ролью Master и одного сервера с ролью Worker. В дальнейшем вы сможете самостоятельно добавить необходимое количество серверов для обеспечения высокой доступности.

Подключаемся к серверу, на который планируется установить роль Kubernetes Master.

Присвоим имя серверу с помощью команды:

sudo hostnamectl set-hostname kubernetes-master-1.heyvaldemar.net

В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Сервер с ролью Worker должен разрешать имя сервера с ролью Master, и также сервер с ролью Master должен разрешать имя сервера с ролью Worker.

Далее в файл “/etc/hosts” добавим IP-адрес и имя сервера с ролью Master с помощью команды:

echo "10.0.5.140 kubernetes-master-1.heyvaldemar.net kubernetes-master-1" | sudo tee -a /etc/hosts

Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.

В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.5.140.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Убедитесь, что имя сервера с ролью Worker имеет правильную запись DNS, а также обновите файл “/etc/hosts” на сервере с помощью команды:

echo "10.0.6.19 kubernetes-worker-1.heyvaldemar.net kubernetes-worker-1" | sudo tee -a /etc/hosts

Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.

В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-worker-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.6.19.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:

sudo systemctl restart systemd-hostnamed

Установка Kubernetes на Ubuntu Server 22.04 LTS

Проверим корректность имени сервера с помощью команды:

hostname

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь заменим текущий процесс оболочки на новый с помощью команды:

exec bash

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее необходимо отключить файл подкачки с помощью команды:

sudo swapoff -a

Установка Kubernetes на Ubuntu Server 22.04 LTS

Команда выше отключает файл подкачки до тех пор, пока система не будет перезагружена. Мы должны убедиться, что он останется выключенным даже после перезагрузки. Для этого нужно отредактировать файл “fstab”, закомментировав строку “/swapfile” символом “#”.

Выполняем команду:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Установка Kubernetes на Ubuntu Server 22.04 LTS

Загрузите модули ядра с помощью команды:

sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

Установка Kubernetes на Ubuntu Server 22.04 LTS

Загружаем модуль “overlay” с помощью команды:

sudo modprobe overlay

Установка Kubernetes на Ubuntu Server 22.04 LTS

Загружаем модуль “br_netfilter” с помощью команды:

sudo modprobe br_netfilter

Установка Kubernetes на Ubuntu Server 22.04 LTS

Установите параметры ядра для Kubernetes с помощью команды:

sudo tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

Установка Kubernetes на Ubuntu Server 22.04 LTS

Применим внесенные изменения с помощью команды:

sudo sysctl --system

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь добавим официальный ключ Docker с помощью команды:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее подключаем репозиторий Docker с помощью команды:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Установка Kubernetes на Ubuntu Server 22.04 LTS

Нажимаем на кнопку “Enter”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь установим пакеты, необходимые для работы Kubernetes, с помощью команды:

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates containerd.io

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь необходимо настроить containerd.

containerd - стандартная среда выполнения контейнеров с упором на простоту, надежность и переносимость.

Выполняем команду:

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

Установка Kubernetes на Ubuntu Server 22.04 LTS

Выполняем команду:

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Установка Kubernetes на Ubuntu Server 22.04 LTS

Перезапустим containerd, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart containerd

Установка Kubernetes на Ubuntu Server 22.04 LTS

Включаем автозапуск сервиса containerd при запуске операционной системы с помощью команды:

sudo systemctl enable containerd

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь добавим официальный ключ Kubernetes с помощью команды:

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

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее подключаем репозиторий Kubernetes с помощью команды:

sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Обратите внимание, на момент написания этого руководства Xenial является актуальным репозиторием Kubernetes, но когда репозиторий будет доступен для Ubuntu 22.04 (Jammy Jellyfish), то вам нужно будет заменить слово в команде выше с “xenial” на “jammy”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Нажимаем на кнопку “Enter”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь установим пакеты kubelet, kubeadm и kubectl с помощью команды:

sudo apt install -y kubelet kubeadm kubectl

Установка Kubernetes на Ubuntu Server 22.04 LTS

На следующем шаге нужно запретить автоматическое обновление и удаление установленных пакетов с помощью команды:

sudo apt-mark hold kubelet kubeadm kubectl

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь необходимо запустить инициализацию кластера Kubernetes с помощью команды:

sudo kubeadm init --control-plane-endpoint=kubernetes-master-1.heyvaldemar.net

В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Обратите внимание, для добавления еще одного сервера в кластер вам потребуется проделать такую же работу по установке и настройке сервера, а затем выполнить команду kubeadm join с соответствующим токеном для сервера с ролью Master или Worker.

Далее необходимо выполнить несколько команд, чтобы начать взаимодействие с кластером.

Выполняем команду:

mkdir -p $HOME/.kube

Установка Kubernetes на Ubuntu Server 22.04 LTS

Выполняем команду:

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

Установка Kubernetes на Ubuntu Server 22.04 LTS

Выполняем команду:

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее можно посмотреть адреса мастера и сервисов с помощью команды:

kubectl cluster-info

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь можно посмотреть список всех узлов в кластере и статус каждого узла с помощью команды:

kubectl get nodes

Установка Kubernetes на Ubuntu Server 22.04 LTS

Подключаемся к серверу, на который планируется установить роль Kubernetes Master.

Присвоим имя серверу с помощью команды:

sudo hostnamectl set-hostname kubernetes-worker-1.heyvaldemar.net

В данном руководстве в качестве имени сервера с ролью Worker используется “kubernetes-worker-1.heyvaldemar.net”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Сервер с ролью Worker должен разрешать имя сервера с ролью Master, и также сервер с ролью Master должен разрешать имя сервера с ролью Worker.

Далее в файл “/etc/hosts” добавим IP-адрес и имя сервера с ролью Master с помощью команды:

echo "10.0.6.19 kubernetes-worker-1.heyvaldemar.net kubernetes-worker-1" | sudo tee -a /etc/hosts

Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.

В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-worker-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.6.19.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Убедитесь, что имя сервера с ролью Worker имеет правильную запись DNS, а также обновите файл “/etc/hosts” на сервере с помощью команды:

echo "10.0.5.140 kubernetes-master-1.heyvaldemar.net kubernetes-master-1" | sudo tee -a /etc/hosts

Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.

В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.5.140.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:

sudo systemctl restart systemd-hostnamed

Установка Kubernetes на Ubuntu Server 22.04 LTS

Проверим корректность имени сервера с помощью команды:

hostname

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь заменим текущий процесс оболочки на новый с помощью команды:

exec bash

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее необходимо отключить файл подкачки с помощью команды:

sudo swapoff -a

Установка Kubernetes на Ubuntu Server 22.04 LTS

Команда выше отключает файл подкачки до тех пор, пока система не будет перезагружена. Мы должны убедиться, что он останется выключенным даже после перезагрузки. Для этого нужно отредактировать файл “fstab”, закомментировав строку “/swapfile” символом “#”.

Выполняем команду:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Установка Kubernetes на Ubuntu Server 22.04 LTS

Загрузите модули ядра с помощью команды:

sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

Установка Kubernetes на Ubuntu Server 22.04 LTS

Загружаем модуль “overlay” с помощью команды:

sudo modprobe overlay

Установка Kubernetes на Ubuntu Server 22.04 LTS

Загружаем модуль “br_netfilter” с помощью команды:

sudo modprobe br_netfilter

Установка Kubernetes на Ubuntu Server 22.04 LTS

Установите параметры ядра для Kubernetes с помощью команды:

sudo tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

Установка Kubernetes на Ubuntu Server 22.04 LTS

Применим внесенные изменения с помощью команды:

sudo sysctl --system

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь добавим официальный ключ Docker с помощью команды:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее подключаем репозиторий Docker с помощью команды:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Установка Kubernetes на Ubuntu Server 22.04 LTS

Нажимаем на кнопку “Enter”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь установим пакеты, необходимые для работы Kubernetes, с помощью команды:

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates containerd.io

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь необходимо настроить containerd.

containerd - стандартная среда выполнения контейнеров с упором на простоту, надежность и переносимость.

Выполняем команду:

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

Установка Kubernetes на Ubuntu Server 22.04 LTS

Выполняем команду:

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Установка Kubernetes на Ubuntu Server 22.04 LTS

Перезапустим containerd, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart containerd

Установка Kubernetes на Ubuntu Server 22.04 LTS

Включаем автозапуск сервиса containerd при запуске операционной системы с помощью команды:

sudo systemctl enable containerd

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь добавим официальный ключ Kubernetes с помощью команды:

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

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее подключаем репозиторий Kubernetes с помощью команды:

sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Обратите внимание, на момент написания этого руководства Xenial является актуальным репозиторием Kubernetes, но когда репозиторий будет доступен для Ubuntu 22.04 (Jammy Jellyfish), то вам нужно будет заменить слово в команде выше с “xenial” на “jammy”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Нажимаем на кнопку “Enter”.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь установим пакеты kubelet, kubeadm и kubectl с помощью команды:

sudo apt install -y kubelet kubeadm kubectl

Установка Kubernetes на Ubuntu Server 22.04 LTS

На следующем шаге нужно запретить автоматическое обновление и удаление установленных пакетов с помощью команды:

sudo apt-mark hold kubelet kubeadm kubectl

Установка Kubernetes на Ubuntu Server 22.04 LTS

Далее необходимо добавить сервер с ролью Worker в кластер Kubernetes с помощью команды:

sudo kubeadm join kubernetes-master-1.heyvaldemar.net:6443 --token 5xuqag.tefxcfleieexwbos \
	--discovery-token-ca-cert-hash sha256:8c3e8eb9d95cd16496db9f65956e2ce1c2164fa64d17a487374bd906dbc0dcb3

Установка Kubernetes на Ubuntu Server 22.04 LTS

Сервер с ролью Worker успешно присоединен к кластеру Kubernetes.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Возвращаемся на сервер с ролью Kubernetes Master.

Теперь можно посмотреть список всех узлов в кластере и статус каждого узла с помощью команды:

kubectl get nodes

Установка Kubernetes на Ubuntu Server 22.04 LTS

Узлы находятся статусе “NotReady”. Чтобы это исправить нужно установить CNI (Container Network Interface) или сетевые надстройки, такие как Calico, Flannel и Weave-net.

Загрузим манифест Calico с помощью команды:

curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O

Установка Kubernetes на Ubuntu Server 22.04 LTS

Установим Calico с помощью команды:

kubectl apply -f calico.yaml

Установка Kubernetes на Ubuntu Server 22.04 LTS

Проверим статус подов в пространстве имен kube-system с помощью команды:

kubectl get pods -n kube-system

Установка Kubernetes на Ubuntu Server 22.04 LTS

Теперь можно посмотреть список всех узлов в кластере и статус каждого узла с помощью команды:

kubectl get nodes

Установка Kubernetes на Ubuntu Server 22.04 LTS

Узлы находятся статусе “Ready” и кластер Kubernetes готов к работе.

Установка Kubernetes на Ubuntu Server 22.04 LTS

Владимир Михалев
Привет, я Владимир Михалев, но друзья зовут меня Вальдемарыч. Я обладаю практическим опытом проектирования и сопровождения различных информационных систем.

Свежие посты

1
2