3.12.2.3 Установка kubernetes 1.24
Установка kubernetes с использованием контейнерного движка containerd
Настройка Master-node
Настройка рабочих нод
Подключение worker к кластеру
Установка kubernetes с использованием контейнерного движка cri-o
Настройка Master-node
Настройка рабочих нод
Подключение worker к кластеру
Установка kubernetes с использованием контейнерного движка cri-dockerd
Настройка Master-node
Настройка рабочих нод
Подключение worker к кластеру
Полезные команды
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Сервер графический
- Версия ПО: kubernetes-1.24.12-1, kubernetes-kubeadm-1.24.12-1
Для дальнейшей настройки необходимо перейти в сеанс пользователя root:
su -
Далее команды будут выполняться с правами пользователя root, если не указано иное.
Установка kubernetes с использованием контейнерного движка containerd
Настройка Master-node
1. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3. Создайте файл для автозагрузки модулей ядра, необходимых для работы сервиса containerd:
nano /etc/modules-load.d/containerd.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
4. Создайте конфигурационный файл для работы сети внутри 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
5. Установите необходимые пакеты:
dnf install kubernetes kubernetes-kubeadm cri-tools tc ipvsadm ebtables socat conntrack git curl wget runc containerd -y
6. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
7. Установите настройки по умолчанию для конфигурации контейнера:
containerd config default | sudo tee /etc/containerd/config.toml
8. Для разрешения использования cgroup переключите флаг параметра systemdCgroup
в конфигурационном файле /etc/containerd/config.toml:
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
9. Запустите службу containerd и добавьте ее в автозагрузку:
systemctl enable --now containerd
10. Добавьте службу kubelet в автозагрузку:
systemctl enable kubelet.service
11. Загрузите образы контейнеров, необходимых kubeadm для инициализации ноды кластера:
kubeadm config images pull
12. Запустите инициализацию мастер-ноды в одноранговом кластере. Данная команда выполнит начальную настройку и подготовку основного узла кластера. Ключ --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.186.86:6443 --token kb0ejg.qtsdbljcnfcc3acd \
--discovery-token-ca-cert-hash sha256:92d275184e764076086f4cc86bca47f6ecedd46526568cc494d97dc27958bec7
13. Настройте параметры управления кластером. Настройку можно выполнить как для локального пользователя, так и для суперпользователя root.
Для управления кластером от имени локального пользователя выполните команды:
mkdir /home/$USER/.kube cp -i /etc/kubernetes/admin.conf /home/$USER/.kube/config chown $USER. /home/$USER/.kube /home/$USER/.kube/config
Для управления кластером от имени суперпользователя root выполните команды:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /root/.bashrc source .bashrc export KUBECONFIG=/etc/kubernetes/admin.conf
Если настройка производилась для локального пользователя, выйдите из сеанса пользователя root командой exit
и дальнейшие действия по настройке кластера выполняйте от имени локального пользователя.
14. Установите внутреннюю конфигурацию сети в кластере (в примере используется calico).
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
15. Проверьте список и статус всех подов в кластере:
kubectl get pod -n kube-system
16. Выполните дополнительную настройку сети:
sudo hostnamectl set-hostname masternode
Проверьте изменения:
hostname && hostname -I
masternode10.81.186.86
17. В файл /etc/hosts внесите данные о master-node и рабочих nodes:
sudo nano /etc/hosts
10.81.186.86 masternode
10.81.186.106 worker
Для вывода команды присоединения рабочих node к кластеру выполните:
kubeadm token create --print-join-command kubeadm join 10.81.186.86:6443 --token kb0ejg.qtsdbljcnfcc3acd --discovery-token-ca-cert-hash sha256:92d275184e764076086f4cc86bca47f6ecedd46526568cc494d97dc27958bec7
Настройка рабочих нод
1. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3. Создайте файл для автозагрузки модулей ядра, необходимых для работы сервиса containerd:
nano /etc/modules-load.d/containerd.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
4. Создайте конфигурационный файл для работы сети внутри 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
5. Установите необходимые пакеты:
dnf install kubernetes kubernetes-kubeadm cri-tools tc ipvsadm ebtables socat conntrack git curl wget runc containerd -y
6. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
7. Установите настройки по умолчанию для конфигурации контейнера:
containerd config default | sudo tee /etc/containerd/config.toml
8. Для разрешения использования cgroup переключите флаг параметра systemdCgroup
в конфигурационном файле /etc/containerd/config.toml:
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
9. Запустите службу containerd и добавьте ее в автозагрузку:
systemctl enable --now containerd
10. Добавьте службу kubelet в автозагрузку:
systemctl enable kubelet.service
11. Выполните дополнительную настройку сети:
sudo hostnamectl set-hostname worker
Проверьте изменения:
hostname && hostname -I
worker10.81.186.106
12. В файл /etc/hosts внесите данные о master и worker:
sudo nano /etc/hosts
10.81.186.86 masternode
10.81.186.106 worker
После этого можно приступать к присоединению worker к кластеру.
Подключение worker к кластеру
1. На master-ноде получите команду присоединения worker:
kubeadm token create --print-join-command
kubeadm join 10.81.186.86:6443 --token l1py3b.pboa64i6uoz63hzp --discovery-token-ca-cert-hash sha256:92d275184e764076086f4cc86bca47f6ecedd46526568cc494d97dc27958bec7
2. На worker выполните полученную команду:
kubeadm join 10.81.186.86:6443 --token t48hdu.lh2sica7ga921pez --discovery-token-ca-cert-hash sha256:92d275184e764076086f4cc86bca47f6ecedd46526568cc494d97dc27958bec7
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
3. На master выполните команду для вывода списка нод кластера и их статуса:
kubectl get nodes NAME STATUS ROLES AGE VERSION localhost.localdomain Ready control-plane 18h v1.24.12 worker Ready <none> 18h v1.24.12
4. Дополнительно можно проверить работу нод на master. Запустите nginx:
kubectl run nginx --image=nginx pod/nginx created
Проверьте размещение пода:
kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 18h
Просмотреть детальную информацию можно с помощью команды:
kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 2m 10.244.171.65 worker <none> <none>
Откройте браузер и в адресной строке пропишите IP-адрес, указанный в детальной информации о поде nginx, 10.244.171.65:
Установка kubernetes с использованием контейнерного движка cri-o
Настройка Master-node
1. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3. Создайте файл для автозагрузки модулей ядра, необходимых для работы сервиса crio:
nano /etc/modules-load.d/crio.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
4. Создайте конфигурационный файл для работы сети внутри 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
5. Установите необходимые пакеты:
dnf install kubernetes kubernetes-kubeadm cri-o cri-tools -y
6. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
7. Установите настройки по умолчанию для конфигурации контейнера:
sed -i '/^\[crio\.runtime\]/a seccomp_profile = "\/etc\/containers\/policy.json"' /etc/crio/crio.conf
8. Запустите службу crio и добавьте ее в автозагрузку:
systemctl enable --now crio
9. Добавьте службу kubelet в автозагрузку:
systemctl enable kubelet.service
10. Загрузите образы контейнеров, необходимых kubeadm для инициализации ноды кластера:
kubeadm config images pull
11. Запустите инициализацию мастер-ноды в одноранговом кластере. Данная команда выполнит начальную настройку и подготовку основного узла кластера. Ключ --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.186.86:6443 --token sj5u6t.m8wl18o26fhj4gml \
--discovery-token-ca-cert-hash sha256:53cbbbaf46036dadd55d348eea7b7585d7e7e048a554f7b684a5e5322f9ba498
12. Настройте параметры управления кластером. Настройку можно выполнить как для локального пользователя, так и для суперпользователя root.
Для управления кластером от имени локального пользователя выполните команды:
mkdir /home/$USER/.kube cp -i /etc/kubernetes/admin.conf /home/$USER/.kube/config chown $USER. /home/$USER/.kube /home/$USER/.kube/config
Для управления кластером от имени суперпользователя root выполните команды:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /root/.bashrc source .bashrc export KUBECONFIG=/etc/kubernetes/admin.conf
Если настройка производилась для локального пользователя, выйдите из сеанса пользователя root командой exit
и дальнейшие действия по настройке кластера выполняйте от имени локального пользователя.
13. Установите внутреннюю конфигурацию сети в кластере (в примере используется calico).
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
14. Проверьте список и статус всех подов в кластере:
kubectl get pod -n kube-system
15. Выполните дополнительную настройку сети:
sudo hostnamectl set-hostname masternode
Проверьте изменения:
hostname && hostname -I
masternode10.81.186.86 10.81.186.67 10.85.0.1 1100:200::1
16. В файл /etc/hosts внесите данные о master и worker:
sudo nano /etc/hosts
10.81.186.86 masternode
10.81.186.106 worker
Для вывода команды присоединения worker к кластеру выполните:
kubeadm token create --print-join-command
kubeadm join 10.81.186.86:6443 --token nxuiy0.xt5ts9u4ynhdoowr --discovery-token-ca-cert-hash sha256:53cbbbaf46036dadd55d348eea7b7585d7e7e048a554f7b684a5e5322f9ba498
Настройка рабочих нод
1. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3. Создайте файл для автозагрузки модулей ядра, необходимых для работы сервиса crio:
nano /etc/modules-load.d/crio.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
4. Создайте конфигурационный файл для работы сети внутри 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
5. Установите необходимые пакеты:
dnf install kubernetes kubernetes-kubeadm cri-o cri-tools -y
6. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
7. Установите настройки по умолчанию для конфигурации контейнера:
sed -i '/^\[crio\.runtime\]/a seccomp_profile = "\/etc\/containers\/policy.json"' /etc/crio/crio.conf
8. Запустите службу crio и добавьте ее в автозагрузку:
systemctl enable --now crio
9. Добавьте службу kubelet в автозагрузку:
systemctl enable kubelet.service
10. Выполните дополнительную настройку сети:
sudo hostnamectl set-hostname worker
Проверьте изменения:
hostname && hostname -I
worker10.81.186.106 10.81.186.142
11. В файл /etc/hosts внесите данные о master и worker:
sudo nano /etc/hosts
10.81.186.86 masternode
10.81.186.106 worker
Подключение worker к кластеру
1. На master-ноде получите команду присоединения worker:
kubeadm token create --print-join-command
kubeadm join 10.81.186.86:6443 --token nxuiy0.xt5ts9u4ynhdoowr --discovery-token-ca-cert-hash sha256:53cbbbaf46036dadd55d348eea7b7585d7e7e048a554f7b684a5e5322f9ba498
2. На worker выполните полученную команду:
kubeadm join 10.81.186.86:6443 --token nxuiy0.xt5ts9u4ynhdoowr --discovery-token-ca-cert-hash sha256:53cbbbaf46036dadd55d348eea7b7585d7e7e048a554f7b684a5e5322f9ba498
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
3. На master выполните команду для вывода списка нод кластера и их статуса:
kubectl get nodes NAME STATUS ROLES AGE VERSION localhost.localdomain Ready control-plane 57m v1.24.12 worker NotReady <none> 19s v1.24.12
4. Дополнительно можно проверить работу нод на master. Запустите nginx:
kubectl run nginx --image=nginx pod/nginx created
Проверьте размещение пода:
kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 104m
Просмотреть детальную информацию можно с помощью команды:
kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 105m 10.85.0.2 worker <none> <none>
Откройте браузер и в адресной строке пропишите IP-адрес, указанный в детальной информации о поде nginx, 10.244.171.65:
Установка kubernetes с использованием контейнерного движка cri-dockerd
Настройка Master-node
1. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3. Установите необходимые пакеты:
dnf install kubernetes kubernetes-kubeadm docker-ce tc ipvsadm ebtables socat conntrack git curl wget -y
4. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
5. Создайте файл для автозагрузки модулей ядра, необходимых для работы сервиса cri-dockerd:
nano /etc/modules-load.d/cridockerd.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
6. Создайте конфигурационный файл для работы сети внутри 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
7. Установите дополнительный плагин для docker:
dnf install cri-dockerd -y
8. Запустите службу docker и добавьте ее в автозагрузку:
systemctl enable --now docker
9. Перезагрузите конфигурации служб:
systemctl daemon-reload
10. Запустите службу cri-docker.service и добавьте ее в автозагрузку:
systemctl enable --now cri-docker.service
11. Запустите сокет cri-docker.socket и добавьте его в автозагрузку:
systemctl enable --now cri-docker.socket
12. Добавьте службу kubelet в автозагрузку:
systemctl enable kubelet.service
13. Загрузите образы контейнеров, необходимых kubeadm для инициализации ноды кластера:
kubeadm config images pull --cri-socket unix:///var/run/cri-dockerd.sock
14. Запустите инициализацию мастер-ноды в одноранговом кластере. Данная команда выполнит начальную настройку и подготовку основного узла кластера. Ключ --pod-network-cidr задает адрес внутренней подсети для вашего кластера.
kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock
В случае успешной инициализации, в конце вывода команды будет отображаться примерно следующее:
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.186.86:6443 --token eplom1.7ddo46uit86m9m4j \
--discovery-token-ca-cert-hash sha256:125dd8b83146c7c1ca5a44ae1c1467337ba0e07a3e83d8578a779279a7046c5a
15. Настройте параметры управления кластером. Настройку можно выполнить как для локального пользователя, так и для суперпользователя root.
Для управления кластером от имени локального пользователя выполните команды:
mkdir /home/$USER/.kube cp -i /etc/kubernetes/admin.conf /home/$USER/.kube/config chown $USER. /home/$USER/.kube /home/$USER/.kube/config
Для управления кластером от имени суперпользователя root выполните команды:
export KUBECONFIG=/etc/kubernetes/admin.conf
Если настройка производилась для локального пользователя, выйдите из сеанса пользователя root командой exit
и дальнейшие действия по настройке кластера выполняйте от имени локального пользователя.
16. Установите внутреннюю конфигурацию сети в кластере (в примере используется calico).
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
17. Проверьте список и статус всех подов в кластере:
kubectl get pod -n kube-system
18. Выполните дополнительную настройку сети:
sudo hostnamectl set-hostname masternode
Проверьте изменения:
hostname && hostname -I
masternode10.81.186.86 10.81.186.67 172.17.0.1 10.244.102.128
19. В файл /etc/hosts внесите данные о master и worker:
sudo nano /etc/hosts
10.81.186.86 masternode
10.81.186.106 worker
Для вывода команды присоединения worker к кластеру выполните:
kubeadm token create --print-join-command
kubeadm join 10.81.186.86:6443 --token 25hv1v.sot5sgkb5eqsih9l --discovery-token-ca-cert-hash sha256:125dd8b83146c7c1ca5a44ae1c1467337ba0e07a3e83d8578a779279a7046c5a
Настройка рабочих нод
1. Для работы kubelet отключите swap:
- выполните команду для разового отключения:
swapoff -a
- чтобы swap не появился после перезагрузки сервера, выполните команду:
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
2. Отключите SELinux:
setenforce 0 && sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3. Установите необходимые пакеты:
dnf install kubernetes kubernetes-kubeadm docker-ce tc ipvsadm ebtables socat conntrack git curl wget -y
4. Настройте проброс портов в iptables:
iptables -P FORWARD ACCEPT
5. Создайте файл для автозагрузки модулей ядра, необходимых для работы сервиса cri-dockerd:
nano /etc/modules-load.d/cridockerd.conf
overlay
br_netfilter
Загрузите модули в ядро:
modprobe overlay modprobe br_netfilter
Проверьте, что данные модули работают:
lsmod | egrep "br_netfilter|overlay"
6. Создайте конфигурационный файл для работы сети внутри 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
7. Установите дополнительный плагин для docker:
dnf install cri-dockerd -y
8. Запустите службу docker и добавьте ее в автозагрузку:
systemctl enable --now docker
9. Перезагрузите конфигурации служб:
systemctl daemon-reload
10. Запустите службу cri-docker.service и добавьте ее в автозагрузку:
systemctl enable --now cri-docker.service
11. Запустите сокет cri-docker.socket и добавьте его в автозагрузку:
systemctl enable --now cri-docker.socket
12. Добавьте службу kubelet в автозагрузку:
systemctl enable kubelet.service
13. Выполните дополнительную настройку сети:
sudo hostnamectl set-hostname masternode
Проверьте изменения:
hostname && hostname -I
masternode10.81.186.86 10.81.186.67 172.17.0.1 10.244.102.128
14. В файл /etc/hosts внесите данные о master и worker:
sudo nano /etc/hosts
10.81.186.86 masternode
10.81.186.106 worker
Подключение worker к кластеру
1. На master-ноде получите команду присоединения worker:
kubeadm token create --print-join-command
kubeadm join 10.81.186.86:6443 --token 25hv1v.sot5sgkb5eqsih9l --discovery-token-ca-cert-hash sha256:125dd8b83146c7c1ca5a44ae1c1467337ba0e07a3e83d8578a779279a7046c5a
2. На worker выполните полученную команду:
kubeadm join 10.81.186.86:6443 --token 25hv1v.sot5sgkb5eqsih9l --discovery-token-ca-cert-hash sha256:125dd8b83146c7c1ca5a44ae1c1467337ba0e07a3e83d8578a779279a7046c5a --cri-socket unix:///run/cri-dockerd.sock
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
3. На master выполните команду для вывода списка нод кластера и их статуса:
kubectl get nodes NAME STATUS ROLES AGE VERSION localhost.localdomain Ready control-plane 79m v1.24.12 worker Ready <none> 2m44s v1.24.12
4. Дополнительно можно проверить работу нод на master. Запустите nginx:
kubectl run nginx --image=nginx pod/nginx created
Проверьте размещение пода:
kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 27m
Просмотреть детальную информацию можно с помощью команды:
kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 2m5s 10.244.171.65 worker <none> <none>
Откройте браузер и в адресной строке пропишите IP-адрес, указанный в детальной информации о поде nginx, 10.244.171.65:
Полезные команды
Далее приведены некоторые полезные для работы команды:
kubectl delete node <имя_ноды>
- удалить ноду;kubectl exec -it nginx -- /bin/bash
- выполнить вход в виртуальную консоль;kubectl delete pods <имя_пода>
- удалить под;kubectl get pod -o wide
- детальная информация о подах;kubectl get service --all-namespaces
- подробная информация о сервисах.
Дата последнего изменения: 04.09.2023
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.