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-адреса для главного узла и рабочего узла:
Шаг 2: Настройка SELinux и брандмауэра
Настройте разрешения SELinux и добавьте необходимые порты в список исключений брандмауэра, чтобы обеспечить бесперебойный сетевой трафик между узлами кластера.
Для начала установите разрешительный режим SELinux на каждом узле с помощью следующих команд:
$ sudo setenforce 0 $ sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
Для подтверждения изменений в SELinux выполните:
$ sudo sestatus
Разрешите следующие порты в брандмауэре на главном узле.
$ 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
На рабочем узле разрешите следующие порты в брандмауэре.
$ sudo firewall-cmd --permanent --add-port={179,10250,30000-32767}/tcp $ sudo firewall-cmd --permanent --add-port=4789/udp $ sudo firewall-cmd --reload
Шаг 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 так, чтобы он мог использовать драйвер 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, выполните
Шаг 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 1.28, поэтому при добавлении репозитория я упомянул версию 1.28.
Затем выполните команду dnf для установки инструментов Kubernetes:
$ sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
Теперь включите сервисные инструменты Kubernetes на каждом узле, чтобы они запускались при загрузке:
$ sudo systemctl enable --now kubelet
Шаг 7: Установка кластера Kubernetes на Alma Linux 9
Теперь мы можем настроить кластер Kubernetes. Запустите команду kubeadm с главного узла, чтобы запустить кластер Kubernetes.
$ sudo kubeadm init --control-plane-endpoint=master.alma-k8s.com
Далее завершите настройку кластера на главном узле, выполнив следующие команды:
$ 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
Позвольте узлу присоединиться к кластеру, пока вы ждете. Когда процесс завершится, появится всплывающее сообщение, указывающее, что узел был присоединен к кластеру.
Далее на главном узле выполните команду kubectl, чтобы проверить состояние узла:
Вывод выше указывает на то, что узел Не готов поэтому на следующем шаге установите сеть Calico или плагин, чтобы сделать узел статусом Готовый.
Шаг 8: Установка расширения сети Calico
Calico Network — это расширение, необходимое в кластере Kubernetes для включения подключения модулей, взаимодействия служб DNS с кластером и установки состояния узлов «Готово».
Выполните следующую команду только с главного узла, чтобы установить Calico CNI (контейнерный сетевой интерфейс).
$ sudo kubectl apply -f
Проверьте состояние стручка Calico:
Далее проверьте статус узла; на этот раз статус узла должен показывать Готовый.
Вот и все! Вывод выше показывает, что узел находится в состоянии «Готов» и может справиться с рабочей нагрузкой.
Заключение
На этом мы завершаем наше подробное руководство по установке кластера Kubernetes на AlmaLinux 9. Мы надеемся, что наше руководство было информативным и дало вам необходимое понимание того, как использовать главные и рабочие узлы для настройки и обслуживания кластера Kubernetes.