Установите кластер 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.
Плоскость управления/главный сервер:
Protocol | Direction | Port Range | Purpose | Used By |
TCP | Inbound | 6443 | Kubernetes API server | All |
TCP | Inbound | 2379-2380 | etcd server client API | kube-apiserver, etcd |
TCP | Inbound | 10250 | Kubelet API | Self, Control plane |
TCP | Inbound | 10259 | kube-scheduler | Self |
TCP | Inbound | 10257 | kube-controller-manager | Self |
Рабочие узлы:
Protocol | Direction | Port Range | Purpose | Used By |
TCP | Inbound | 10250 | Kubelet API | Self, Control plane |
TCP | Inbound | 30000-32767 | NodePort Services | All |
Чтобы разрешить необходимые порты через брандмауэр, выполните следующие команды.
Главный узел:
[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/