3.12.2.2 Установка kubernetes 1.21
Настройка Master-node
Настройка рабочих нод
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Сервер графический
- Версия ПО: kubernetes 1.21.5-1
Настройка Master-node
1. Перейдите в сеанс пользователя root:
su -
и установите необходимые пакеты:
dnf install docker-ce tc ipvsadm ebtables kubernetes-1.21.5 kubernetes-kubeadm-1.21.5 -y
Здесь и далее команды выполняются с правами пользователя root, если не указано иное.
2. Запустите службы docker и добавьте их в автозагрузку:
systemctl enable docker --now
3. Добавьте службы kubelet в автозагрузку:
systemctl enable kubelet.service
4. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
5. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
6. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
7. Создайте файл для автозагрузки модулей ядра необходимых для работы сервиса containerd:
nano /etc/modules-load.d/containerd.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
8. Создайте конфигурационный файл для работы сети внутри kubernetes:
nano /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
Примените параметры командой:
sysctl --system
9. Загрузите образы контейнеров, необходимых kubeadm для инициализации ноды кластера:
kubeadm config images pull
10. Инициализация мастер-ноды в одноранговом кластере. Данная команда выполнит начальную настройку и подготовку основного узла кластера. Ключ --pod-network-cidr задает адрес внутренней подсети для вашего кластера.
kubeadm init --pod-network-cidr=10.244.0.0/16
В случае успешной инициализации, в конце вывода команды будет отображаться примерно следующее:
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 10.81.1.135:6443 --token efcuyh.7g69uwy24uitstxw \ --discovery-token-ca-cert-hash sha256:5e579881863ff117fd8f06e88f9d1677242b98379b86c522027ad8b3c81f9bdc
11. Для управления кластером от имени локального пользователя выполните команды:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
12. От имени пользователя root выполните команду:
export KUBECONFIG=/etc/kubernetes/admin.conf
Данная команда используется для подключения рабочих нод к мастеру:
kubeadm join 10.81.1.135:6443 --token efcuyh.7g69uwy24uitstxw \ --discovery-token-ca-cert-hash sha256:5e579881863ff117fd8f06e88f9d1677242b98379b86c522027ad8b3c81f9bdc
Также ее можно получить с помощью команды:
kubeadm token create --print-join-command
13. Для работы кластера установите плагин сети, в данном случае выбран calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
14. В файле /etc/systemd/system/kubelet.service.d/kubeadm.conf закомментируйте строку:
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-confdir=/etc/cni/net.d --cni-bin-dir=/usr/libexec/cni"
15. В каталоге /etc/kubernetes/manifests/ в каждом из файлов манифестов удалите строку «- -- port=0».
16. Перезапустите службу kubelet:
systemctl daemon-reload systemctl restart kubelet.service
17. Проверьте список и статус всех подов в кластере:
kubectl get pod -n kube-system
Настройка рабочих нод
1. Перейдите в сеанс пользователя root:
su -
и установите необходимые пакеты:
dnf install docker-ce tc ipvsadm ebtables kubernetes-1.21.5 kubernetes-kubeadm-1.21.5 -y
Здесь и далее команды выполняются с правами пользователя root, если не указано иное.
2. Запустите службы docker и добавьте их в автозагрузку:
systemctl enable docker --now
3. Добавьте службы kubelet в автозагрузку:
systemctl enable kubelet.service
4. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
5. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
6. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
7. Создайте файл для автозагрузки модулей ядра необходимых для работы сервиса containerd:
nano /etc/modules-load.d/containerd.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
8. Создайте конфигурационный файл для работы сети внутри kubernetes:
nano /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
Примените параметры командой:
sysctl --system
9. В файле /etc/systemd/system/kubelet.service.d/kubeadm.conf закомментируйте строку:
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-confdir=/etc/cni/net.d --cni-bin-dir=/usr/libexec/cni"
10. Перезапустите службу kubelet:
systemctl daemon-reload systemctl restart kubelet.service
Выполните команду для присоединения ноды к кластеру, полученную на мастер-ноде:
kubeadm join 10.81.1.135:6443 --token efcuyh.7g69uwy24uitstxw --discovery-token-ca-cert-hash sha256:5e579881863ff117fd8f06e88f9d1677242b98379b86c522027ad8b3c81f9bdc
После этого на мастер-ноде выполните команду для вывода списка нод кластера и их статус:
kubectl get nodes
Пример вывода:
NAME STATUS ROLES AGE VERSION master Ready control-plane,master 77m v1.21.5 node1 Ready <none> 3m28s v1.21.5
Дата последнего изменения: 07.08.2023
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.