Kubernetes, также известный как K8s, — это платформа оркестровки контейнеров с открытым исходным кодом. Cloud Native Computing Foundation (CNCF) в настоящее время отвечает за ее обслуживание после того, как Google ее разработала. Многие предприятия и организации полагаются на Kubernetes для выполнения своих облачных приложений.

Кластер Kubernetes в основном состоит из одного главного узла и множества рабочих узлов. Рабочие узлы отвечают за работу контейнеров и выполнение любых задач, назначенных им главным узлом.

Главный узел отвечает за выполнение задач, включая планирование и масштабирование приложений, поддержание состояния кластера и реализацию обновлений.

Кроме того, Кубернетес построен на наборе примитивов или строительных блоков, таких как службы, модули, развертывания и т. д. Эти строительные блоки описывают, как ваши контейнеры в кластере группируются, планируются, раскрываются и обновляются.

Установка кластера Kubernetes на AlmaLinux

Установка Kubernetes включает в себя настройку операционной системы и получение зависимостей, необходимых для конфигурации кластера. Шаги в этом руководстве описывают, как подготовить рабочие станции AlmaLinux для развертывания кластера Kubernetes.

Примечание: Выполните каждый шаг этого руководства на обоих узлах, которые вы хотите добавить в кластер Kubernetes.z

Шаг 1: Настройте имя хоста и файл хоста

Узлы кластера Kubernetes должны иметь разные имена хостов. Измените имена хостов ваших главных и рабочих машин, выполнив две процедуры ниже на каждом узле:

Запустите команду hostnamectl, чтобы задать имя хоста для обоих узлов:

$ sudo hostnamectl set-hostname [hostname]

Далее перейдите в файл /etc/hosts и добавьте следующие параметры:

[master-node-ip] [master-node-hostname]
[worker-node-ip] [worker-node-hostname]

Чтобы избежать путаницы в будущем, убедитесь, что шаблон именования логичен. Например, в приведенной ниже настройке показаны соответствующие имена и IP-адреса для главного узла и рабочего узла:

Kubernetes-Master-Worker-Nodes-Entries-Host-File

Шаг 2: Настройка SELinux и брандмауэра

Настройте разрешения SELinux и добавьте необходимые порты в список исключений брандмауэра, чтобы обеспечить бесперебойный сетевой трафик между узлами кластера.

Для начала установите разрешительный режим SELinux на каждом узле с помощью следующих команд:

$ sudo setenforce 0
$ sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux

Для подтверждения изменений в SELinux выполните:

$ sudo sestatus

Setstatus-Команда-Вывод-Almlinux9

Разрешите следующие порты в брандмауэре на главном узле.

$ sudo firewall-cmd --permanent --add-port={6443,2379,2380,10250,10251,10252,10257,10259,179}/tcp
$ sudo firewall-cmd --permanent --add-port=4789/udp
$ sudo firewall-cmd --reload

Kubernetes-Master-Node-Firewall-Правила-AlmaLinux9

На рабочем узле разрешите следующие порты в брандмауэре.

$ sudo firewall-cmd --permanent --add-port={179,10250,30000-32767}/tcp
$ sudo firewall-cmd --permanent --add-port=4789/udp
$ sudo firewall-cmd --reload

Правила брандмауэра-Kubernetes-Рабочие-Узлы-AlmaLinux9

Шаг 3: Отключите подкачку памяти на каждом узле

Запуск узла с включенным свопом влияет на производительность кластера. Отключите память подкачки на AlmaLinux, выполнив команды, как показано ниже:

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

Шаг 4: Добавьте модули ядра и включите переадресацию IP

Для успешной установки Kubernetes мы должны добавить модули ядра overlay и br_netfilter на каждом узле. Создайте файл containerd.conf со следующим содержимым, чтобы эти модули загружались автоматически при перезагрузке.

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

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

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

Теперь включите IP forwarding и bridge-nf-call-iptables на каждом узле. Создайте следующий файл и добавьте в него следующее содержимое.

$ sudo vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1

сохраните и выйдите из файла. Чтобы внести указанные выше изменения в effect, выполните следующую команду sysctl.

$ sudo sysctl --system

Шаг 5: Установка среды выполнения Conatinerd

Kubernetes Cluster требует контейнерную среду выполнения, и containerd является одним из наиболее распространенных вариантов. Однако он недоступен в репозиториях пакетов AlmaLinux по умолчанию; поэтому добавьте следующий репозиторий Docker к каждому узлу.

$ sudo dnf config-manager --add-repo

Теперь используйте командную утилиту dnf для установки containerd на каждом узле.

$ sudo dnf install containerd.io -y

Установить-Containerd-для-Kubernetes-AlmaLinux9

Далее мы настроим containerd так, чтобы он мог использовать драйвер systemdcgroup. Для этого выполните следующие команды на обоих узлах:

$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
$ sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Включите и перезапустите службу containerd с помощью следующих команд:

$ sudo systemctl restart containerd
$ sudo systemctl enable containerd

Чтобы проверить, запущена ли служба conatinerd, выполните

Контейнер-Сервис-Статус-Almalinux9

Шаг 6: Установка инструментов Kubernetes

Kubernetes содержит три основных инструмента, включая kubeadm, который включает в себя инструменты инициализации кластера: агент основного узла kubelet и инструмент командной строки Kubernetes kubectl.

Эти инструменты недоступны в репозиториях пакетов AlmaLinux 9 по умолчанию. Поэтому установите эти инструменты, добавив следующий репозиторий к каждому узлу.

$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=
enabled=1
gpgcheck=1
gpgkey=repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

Добавить-Kubernetes-Repository-AlmaLinux9

Примечание: На момент написания статьи доступна версия Kubernetes 1.28, поэтому при добавлении репозитория я упомянул версию 1.28.

Затем выполните команду dnf для установки инструментов Kubernetes:

$ sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

Установить-Kubernetes-Tools-AlmaLinux9

Теперь включите сервисные инструменты Kubernetes на каждом узле, чтобы они запускались при загрузке:

$ sudo systemctl enable --now kubelet

Шаг 7: Установка кластера Kubernetes на Alma Linux 9

Теперь мы можем настроить кластер Kubernetes. Запустите команду kubeadm с главного узла, чтобы запустить кластер Kubernetes.

$ sudo kubeadm init --control-plane-endpoint=master.alma-k8s.com

Установить-Kubernetes-Cluster-AlmaLinux9-Kubeadm-Command

Далее завершите настройку кластера на главном узле, выполнив следующие команды:

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Теперь давайте присоединим рабочий узел к кластеру. Для этого выполните команду kubeadm с рабочего узла, как показано:

$ sudo kubeadm join master.alma-k8s.com:6443 --token b8sf4t.1412n5xxj7xy79jk \ 
--discovery-token-ca-cert-hash sha256:018cfa8e18602cfd6670f81be7095605d2ba90c6793b7469e945dbb4

Позвольте узлу присоединиться к кластеру, пока вы ждете. Когда процесс завершится, появится всплывающее сообщение, указывающее, что узел был присоединен к кластеру.

Присоединить рабочий узел к кластеру Kubernetes-AlmaLinux9

Далее на главном узле выполните команду kubectl, чтобы проверить состояние узла:

Вывод выше указывает на то, что узел Не готов поэтому на следующем шаге установите сеть Calico или плагин, чтобы сделать узел статусом Готовый.

Шаг 8: Установка расширения сети Calico

Calico Network — это расширение, необходимое в кластере Kubernetes для включения подключения модулей, взаимодействия служб DNS с кластером и установки состояния узлов «Готово».

Выполните следующую команду только с главного узла, чтобы установить Calico CNI (контейнерный сетевой интерфейс).

$ sudo kubectl apply -f

Установка-Calico-Network-Addon-Kubernetes-AlmaLinux9

Проверьте состояние стручка Calico:

Проверка-Calico-Pods-статуса-Kubernetes-Almalinux

Далее проверьте статус узла; на этот раз статус узла должен показывать Готовый.

Kubernetes-Узлы-Статус-После-Установки-Calico

Вот и все! Вывод выше показывает, что узел находится в состоянии «Готов» и может справиться с рабочей нагрузкой.

Заключение

На этом мы завершаем наше подробное руководство по установке кластера Kubernetes на AlmaLinux 9. Мы надеемся, что наше руководство было информативным и дало вам необходимое понимание того, как использовать главные и рабочие узлы для настройки и обслуживания кластера Kubernetes.