Поиск по сайту:

Установите кластер Kubernetes с помощью Kubeadm в RHEL

Настройка кластера Kubernetes с помощью Kubeadm в Linux

В этой статье мы узнаем об установке кластера Kubernetes с использованием Kubeadm в RHEL 8 и его клонах, таких как AlmaLinux 8, CentOS 8 и Rocky Linux 8.

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

Чтобы продолжить установку, нам необходимы нижеуказанные основные требования.

  • Минимум 2 хоста.
  • 2 процессора.
  • 2 ГБ физической памяти (ОЗУ).
  • 20 ГБ дискового пространства.
  • Подключение к Интернету для загрузки пакетов.

1. Настройте имя хоста и IP-адрес.

Задайте имя хоста и настройте хосты в Master и Workers. Файл Hosts операционной системы используется для преобразования имен хостов или доменных имен в IP-адреса.

Здесь у нас будет два хоста:

  • остехмастер - Мастер
  • остехработник - рабочий

Используйте команду ниже, чтобы установить имя хоста. После установки имени хоста потребуется перезагрузка.

hostnamectl set-hostname ostechmaster

Отредактируйте файл /etc/hosts:

vi /etc/hosts

Добавьте имя хоста и IP-адрес сервера и клиента в файл /etc/hosts:

Настройте имя хоста и IP-адрес

Выполните ping-тест, чтобы убедиться в возможности подключения:

[root@ostechmaster ~]# ping ostechworker
PING ostechworker (172.31.5.141) 56(84) bytes of data.
64 bytes from ostechworker (172.31.5.141): icmp_seq=1 ttl=64 time=0.472 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=2 ttl=64 time=0.492 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=3 ttl=64 time=1.43 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=4 ttl=64 time=0.425 ms

2. Отключите SElinux.

Отключите SElinux в Master и Workers, чтобы все контейнеры могли легко получить доступ к файловой системе хоста, если SElinux отключен.
Сделайте 'SELINUX=disabled' в файле конфигурации /etc/selinux/config. с помощью редактора vi. Требуется перезагрузка, чтобы отразить изменения SElinux.

[root@ostechmaster ~]# vi /etc/selinux/config

Отключить SElinux

Убедитесь в статусе SElinux, используя команду ниже.

[root@ostechmaster ~]# sestatus
SELinux status: disabled

3. Отключите обмен в Master и Worker.

Swap необходимо деактивировать на всех хостах Kubernetes (главных и рабочих). Это предпочтительный метод развертывания сообщества Kubernetes. Служба kubelet не запустится на главном и рабочих серверах, если своп не отключен.

Запустите следующую команду, чтобы отключить SWAP:

[root@ostechmaster ~]# swapoff -a && sed -i '/swap/d' /etc/fstab

4. Разрешите необходимые порты в брандмауэре.

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

Плоскость управления/главный сервер:

ProtocolDirectionPort RangePurposeUsed By
TCPInbound6443Kubernetes API serverAll
TCPInbound2379-2380etcd server client APIkube-apiserver, etcd
TCPInbound10250Kubelet APISelf, Control plane
TCPInbound10259kube-schedulerSelf
TCPInbound10257kube-controller-managerSelf

Рабочие узлы:

ProtocolDirection Port RangePurposeUsed By
TCPInbound10250Kubelet APISelf, Control plane
TCPInbound30000-32767NodePort ServicesAll

Чтобы разрешить необходимые порты через брандмауэр, выполните следующие команды.

Главный узел:

[root@ostechmaster ~]# firewall-cmd --permanent --add-port=6443/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10250/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10251/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10259/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10257/tcp
[root@ostechmaster ~]# firewall-cmd --reload

Рабочий узел:

[root@ostechworker ~]# firewall-cmd --permanent --add-port=10250/tcp
[root@ostechworker ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[root@ostechworker ~]# firewall-cmd --reload

Мы отключаем брандмауэр как в Master, так и в Worker, так как это сделано в демонстрационных целях. Однако это не рекомендуется для практики производства в реальном времени.

Используйте приведенные ниже команды, чтобы остановить и отключить брандмауэр.

[root@ostechmaster ~]# systemctl stop firewalld
[root@ostechmaster ~]# systemctl disable firewalld

5. Установите Докер

Docker упрощает «создание» контейнеров, тогда как Kubernetes позволяет «управлять» ими в режиме реального времени. Чтобы упаковать и отправить программное обеспечение, используйте Docker. Чтобы запустить и масштабировать свое приложение, используйте Kubernetes.

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

Создайте файл с именем docker.repo в каталоге /etc/yum.repos.d/:

[root@ostechmaster ~]# vi /etc/yum.repos.d/docker.repo

Добавьте в него следующие строки:

[docker]
baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/
gpgcheck=0

Нажмите клавишу ESC и введите :wq, чтобы сохранить файл и закрыть его.

Установите docker как на главном, так и на рабочем узлах:

yum -y install docker-ce

После установки включите и запустите Docker на обоих узлах:

systemctl enable docker
systemctl start docker

Проверьте и убедитесь, что Docker работает на обеих машинах.

systemctl status docker

Проверьте статус Docker

6. Установите Кубернетес

Добавьте репозиторий Kubernetes в Master и Worker.

Создайте файл kubernetes.repo как в главном, так и в рабочем каталоге /etc/yum.repos.d/:

vi /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

Нажмите ESC и введите :wq, чтобы сохранить файл и закрыть его.

Установите kubeadm, kubelet, kubectl на главных и рабочих узлах, используя следующую команду:

yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes

Включите и запустите службу kubelet на обеих машинах:

systemctl enable kubelet
systemctl start kubelet

Проверьте состояние службы Kubelet и убедитесь, что она работает нормально на обеих машинах.

systemctl status kubelet

Проверьте статус службы Kubelet

7. Инициализируйте Kubernetes

Используйте приведенную ниже команду для инициализации Kubernetes на главном сервере.

[root@ostechmaster ~]# kubeadm init

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

Также скопируйте и сохраните команду 'kubeadm join' из вывода, она будет использоваться для присоединения рабочего узла в кластере.

Пример вывода:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r \
        --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

Инициализируйте Kubernetes

Поскольку мы работаем с пользователем root, запустите приведенную ниже команду на главном сервере, как указано в приведенном выше выводе.

[root@ostechmaster ~]#  export KUBECONFIG=/etc/kubernetes/admin.conf

8. Настройте сеть POD

Сеть Kubernetes Pod — это сеть взаимосвязанных компонентов в Kubernetes. Эта концепция сети может быть реализована несколькими различными способами. В нашей демонстрации мы будем использовать 'Weave Net'.

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

[root@ostechmaster ~]# export kubever=$(kubectl version | base64 | tr -d '\n')
[root@ostechmaster ~]# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever

Пример вывода:

serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created
[root@ostechmaster ~]#

9. Присоединитесь к рабочему узлу

Запустите команду «kubeadm join», чтобы присоединить рабочий узел к кластеру. Это команда, которую мы скопировали из вывода «kubeadm init».

[root@ostechworker ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r         --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

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

Вы можете проверить узел на главном сервере, используя команду ниже.

kubectl get nodes

Пример вывода:

NAME           STATUS     ROLES                  AGE   VERSION
ostechmaster   Ready      control-plane,master   32m   v1.23.1
ostechworker   Ready   <none>                 30m   v1.23.1

Заключение

В этой статье мы рассмотрели подробные инструкции по установке и настройке кластера Kubernetes с помощью Kubeadm. Обратитесь к нашей предыдущей серии статей kubernetes, чтобы получить подробное представление об архитектуре и концепциях Kubernetes. Мы увидим работу Kubernetes в следующих статьях.

Читать далее:

  • Как создавать модули Kubernetes и управлять ими в Linux

Ресурс:

  • https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

Статьи по данной тематике