Wiki source code of Как установить кластер Kubernetes с Kubeadm на Rocky Linux
Last modified by Сергей Коршунов on 2023/06/09 19:31
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | = Как установить кластер Kubernetes с Kubeadm на Rocky Linux = |
| 2 | |||
| 3 | ---- | ||
| 4 | |||
| 5 | 1. Предпосылки | ||
| 6 | 1. Настройка систем | ||
| 7 | 1. Настройка файла /etc/hosts | ||
| 8 | 1. Настройка правил брандмауэра | ||
| 9 | 1. Настройка модулей SELinux и ядра и отключение SWAP | ||
| 10 | 1. Установка среды выполнения контейнера: Containerd | ||
| 11 | 1. Установка пакетов Kubernetes | ||
| 12 | 1. Установка подключаемого модуля CNI: фланель | ||
| 13 | 1. Инициализация плоскости управления Kubernetes | ||
| 14 | 1. Добавление рабочих узлов в Kubernetes | ||
| 15 | 1. Заключение | ||
| 16 | |||
| 17 | |||
| 18 | Kubernetes или k8s — это платформа с открытым исходным кодом для оркестрации контейнеров, которая автоматизирует развертывание, управление и масштабирование контейнерных приложений. Kubernetes — это оркестровка контейнеров, созданная Google, которая теперь стала проектом с открытым исходным кодом и стандартом для современных платформ развертывания приложений и вычислений. | ||
| 19 | |||
| 20 | Kubernetes — это решение для современной эпохи развертывания контейнеров. Он обеспечивает обнаружение служб и балансировку нагрузки, оркестрацию хранилища, автоматическое развертывание и откат, службу самовосстановления, управление секретами и конфигурацией. Kubernetes обеспечивает экономичную облачную разработку. | ||
| 21 | |||
| 22 | В этом руководстве вы настроите кластер Kubernetes, выполнив следующие действия: | ||
| 23 | |||
| 24 | |||
| 25 | 1. Настройка системы, включающая настройку файла /etc/hosts, настройку SELinux, включение модулей ядра и отключение SWAP. | ||
| 26 | 1. Настройка Firewalld путем добавления некоторых портов, необходимых для Kubernetes. | ||
| 27 | 1. Установка containerd в качестве среды выполнения контейнера для Kubernetes. | ||
| 28 | 1. Установка пакетов Kubernetes, таких как kubelet, kubeadm и kubectl. | ||
| 29 | 1. Установка сетевого подключаемого модуля Flannel для модулей Kubernetes. | ||
| 30 | 1. Инициализация одного узла плоскости управления и добавление двух рабочих узлов. | ||
| 31 | |||
| 32 | |||
| 33 | == Предпосылки == | ||
| 34 | |||
| 35 | Для выполнения этого руководства вам потребуются следующие требования: | ||
| 36 | |||
| 37 | |||
| 38 | * Три или более серверов Rocky Linux. | ||
| 39 | * Пользователь без полномочий root с правами root/администратора. | ||
| 40 | |||
| 41 | |||
| 42 | == Настройка систем == | ||
| 43 | |||
| 44 | Прежде чем вы начнете устанавливать какие-либо пакеты для развертывания Kubernetes, вам необходимо настроить все свои системы в соответствии с требованиями для развертывания Kubernetes. Сюда входят следующие конфигурации: | ||
| 45 | |||
| 46 | |||
| 47 | * Настройте правильный файл /etc/hosts: каждое имя хоста сервера должно быть преобразовано в правильный IP-адрес. Это можно сделать несколькими способами, но самый простой и удобный — использовать файл /etc/hosts на всех серверах. | ||
| 48 | * Настройка брандмауэра. Для производственной среды всегда рекомендуется включать брандмауэр как на уровне управления, так и на рабочих узлах. | ||
| 49 | * Настройка SELinux: В этом примере мы изменим правило SELinux по умолчанию на \разрешающий\. | ||
| 50 | * Включить модули ядра. Kubernetes требовал включения некоторых модулей ядра в системе Linux. Модуль ядра \overlay\ и \br_netfilter\ требуется, чтобы позволить iptables видеть трафик моста. | ||
| 51 | * Отключить SWAP: это обязательно, вы должны отключить SWAP на всех узлах Kubernetes, как на уровне управления, так и на рабочих узлах. В противном случае служба kubelet будет работать с проблемами. | ||
| 52 | |||
| 53 | |||
| 54 | == Настройка файла /etc/hosts == | ||
| 55 | |||
| 56 | На этом первом шаге вы настроите системное имя хоста и файл /etc/hosts на всех ваших серверах. Для этой демонстрации мы будем использовать следующие серверы. | ||
| 57 | |||
| 58 | {{{Hostname IP Address Used as | ||
| 59 | ------------------------------------------------------- | ||
| 60 | kube-master 192.168.5.10 control-plane | ||
| 61 | kube-kube-worker1 192.168.5.15 worker node | ||
| 62 | kube-kube-worker2 192.168.5.16 worker node}}} | ||
| 63 | |||
| 64 | Выполните приведенную ниже команду //hostnamectl//, чтобы настроить системное имя хоста на каждом сервере. | ||
| 65 | |||
| 66 | Для узла плоскости управления выполните следующую команду, чтобы установить системное имя хоста \//kube-master//\. | ||
| 67 | |||
| 68 | {{{sudo hostnamectl set-hostname kube-master}}} | ||
| 69 | |||
| 70 | Для рабочих узлов Kubernetes выполните следующую команду hostnamectl. | ||
| 71 | |||
| 72 | {{{# setup hostname kube-worker1 | ||
| 73 | sudo hostnamectl set-hostname kube-worker1 | ||
| 74 | |||
| 75 | # setup hostname kube-worker2 | ||
| 76 | sudo hostnamectl set-hostname kube-worker2}}} | ||
| 77 | |||
| 78 | Затем измените файл ///etc/hosts// на всех серверах с помощью следующей команды. | ||
| 79 | |||
| 80 | {{{sudo nano /etc/hosts}}} | ||
| 81 | |||
| 82 | Добавьте следующую конфигурацию в файл. Убедитесь, что каждое имя хоста указывает на правильный IP-адрес. | ||
| 83 | |||
| 84 | {{{192.168.5.10 kube-master | ||
| 85 | 192.168.5.15 kube-worker1 | ||
| 86 | 192.168.5.16 kube-worker2}}} | ||
| 87 | |||
| 88 | Сохраните и закройте файл, когда закончите. | ||
| 89 | |||
| 90 | Наконец, если вы запустите команду ping для каждого имени хоста, вам будет указан правильный IP-адрес, указанный в файле ///etc/hosts//. | ||
| 91 | |||
| 92 | {{{ping kube-master -c3 | ||
| 93 | ping kube-worker1 -c3 | ||
| 94 | ping kube-worker2 -c3}}} | ||
| 95 | |||
| 96 | == Настройка правил брандмауэра == | ||
| 97 | |||
| 98 | Kubernetes требовал, чтобы некоторые порты были открыты во всех ваших системах. В системе на основе RHEL по умолчанию Firewalld является приложением брандмауэра по умолчанию. Вы добавите несколько портов в Firewalld для развертывания Kubernetes. | ||
| 99 | |||
| 100 | Для плоскости управления Kubernetes вам необходимо открыть следующие порты: | ||
| 101 | |||
| 102 | {{{Protocol Direction Port Range Purpose Used By | ||
| 103 | ----------------------------------------------- | ||
| 104 | TCP Inbound 6443 Kubernetes API server All | ||
| 105 | TCP Inbound 2379-2380 etcd server client API kube-apiserver, etcd | ||
| 106 | TCP Inbound 10250 Kubelet API Self, Control plane | ||
| 107 | TCP Inbound 10259 kube-scheduler Self | ||
| 108 | TCP Inbound 10257 kube-controller-manager Self}}} | ||
| 109 | |||
| 110 | Для рабочих узлов Kubernetes необходимо открыть следующие порты: | ||
| 111 | |||
| 112 | {{{Protocol Direction Port Range Purpose Used By | ||
| 113 | -------------------------------------------------- | ||
| 114 | TCP Inbound 10250 Kubelet API Self, Control plane | ||
| 115 | TCP Inbound 30000-32767 NodePort Services† All}}} | ||
| 116 | |||
| 117 | На узле плоскости управления \kube-master\ выполните следующую команду firewall-cmd, чтобы открыть порты плоскости управления Kubernetes. Затем перезагрузите правила Firewalld и проверьте список доступных правил. | ||
| 118 | |||
| 119 | {{{sudo firewall-cmd --add-port=6443/tcp --permanent | ||
| 120 | sudo firewall-cmd --add-port=2379-2380/tcp --permanent | ||
| 121 | sudo firewall-cmd --add-port=10250/tcp --permanent | ||
| 122 | sudo firewall-cmd --add-port=10259/tcp --permanent | ||
| 123 | sudo firewall-cmd --add-port=10257/tcp --permanent | ||
| 124 | |||
| 125 | sudo firewall-cmd --reload | ||
| 126 | sudo firewall-cmd --list-all}}} | ||
| 127 | |||
| 128 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/1-setup-firewalld-kube-master.png]] | ||
| 129 | |||
| 130 | На рабочих узлах «kube-worker1» и «kube-worker2» выполните следующую команду firewall-cmd, чтобы открыть некоторые рабочие порты Kubernetes. Затем перезагрузите Firewalld и проверьте список доступных правил в Firewalld. | ||
| 131 | |||
| 132 | {{{sudo firewall-cmd --add-port=10250/tcp --permanent | ||
| 133 | sudo firewall-cmd --add-port=30000-32767/tcp --permanent | ||
| 134 | |||
| 135 | sudo firewall-cmd --reload | ||
| 136 | sudo firewall-cmd --list-all}}} | ||
| 137 | |||
| 138 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/2-setup-firewalld-kube-worker.png]] | ||
| 139 | |||
| 140 | == Настройте модули SELinux и ядра и отключите SWAP == | ||
| 141 | |||
| 142 | Чтобы сервис Kubernetes kubelet работал правильно, вам нужно будет изменить SELinux по умолчанию на «разрешающий» или вы можете полностью отключить SELinux. В этом примере вы измените политику SELinux с «принудительной» на «разрешающую», что означает, что вы будете получать уведомления только от SELinux. | ||
| 143 | |||
| 144 | Выполните следующую команду, чтобы изменить политику SELinux по умолчанию на «разрешительную». Затем проверьте и проверьте текущий статус политики SELinux. Вы должны увидеть, что SELinux все еще включен, но с политикой «разрешительной». | ||
| 145 | |||
| 146 | {{{sudo setenforce 0 | ||
| 147 | sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config | ||
| 148 | |||
| 149 | sestatus}}} | ||
| 150 | |||
| 151 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/3-setup-selinux.png]] | ||
| 152 | |||
| 153 | Затем Kubernetes потребовал, чтобы на всех серверах были включены модули ядра «overlay» и «br_netfilter». Это позволит iptbales видеть мостовой трафик. Также вам нужно будет включить переадресацию портов и отключить SWAP. | ||
| 154 | |||
| 155 | Запустите следующую команду, чтобы включить модули ядра \overlay\ и \br_netfilter\. | ||
| 156 | |||
| 157 | {{{sudo modprobe overlay | ||
| 158 | sudo modprobe br_netfilter}}} | ||
| 159 | |||
| 160 | Чтобы сделать его постоянным, создайте файл конфигурации в \///etc/modules-load.d/k8s.conf//\. Это позволит системам Linux включать модули ядра во время загрузки системы. | ||
| 161 | |||
| 162 | {{{cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf | ||
| 163 | overlay | ||
| 164 | br_netfilter | ||
| 165 | EOF}}} | ||
| 166 | |||
| 167 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/4-enable-kernel-modules.png]] | ||
| 168 | |||
| 169 | Затем создайте необходимые параметры systemctl с помощью следующей команды. | ||
| 170 | |||
| 171 | {{{cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf | ||
| 172 | net.bridge.bridge-nf-call-iptables = 1 | ||
| 173 | net.bridge.bridge-nf-call-ip6tables = 1 | ||
| 174 | net.ipv4.ip_forward = 1 | ||
| 175 | EOF}}} | ||
| 176 | |||
| 177 | Чтобы применить новую конфигурацию sysctl без перезагрузки, используйте следующую команду. Вы должны получить список параметров sysctl по умолчанию в вашей системе и убедиться, что вы получили параметры sysctl, которые вы только что добавили в файл \//k8s.conf//\. | ||
| 178 | |||
| 179 | {{{sudo sysctl --system}}} | ||
| 180 | |||
| 181 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/5-setup-sysctl-params.png]] | ||
| 182 | |||
| 183 | Чтобы отключить SWAP, вам нужно будет прокомментировать конфигурацию SWAP в файле \///etc/fstab//\. Это можно сделать с помощью одной команды через sed (редактор потока) или вручную отредактировав файл ///etc/fstab//. | ||
| 184 | |||
| 185 | {{{sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab}}} | ||
| 186 | |||
| 187 | или | ||
| 188 | |||
| 189 | {{{sudo nano /etc/fstab}}} | ||
| 190 | |||
| 191 | Теперь отключите SWAP в текущем сеансе с помощью приведенной ниже команды. Затем убедитесь, что SWAP отключен с помощью команды \//free -//m\. Вы должны увидеть, что SWAP имеет значения «0», что означает, что теперь он отключен. | ||
| 192 | |||
| 193 | {{{sudo swapoff -a | ||
| 194 | free -m}}} | ||
| 195 | |||
| 196 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/6-disable-swap.png]] | ||
| 197 | |||
| 198 | == Установка среды выполнения контейнера: Containerd == | ||
| 199 | |||
| 200 | Чтобы настроить кластер Kubernetes, необходимо установить среду выполнения контейнера на всех серверах, чтобы могли работать поды. Для развертываний Kubernetes можно использовать несколько сред выполнения контейнеров, таких как containerd, CRI-O, Mirantis Container Runtime и Docker Engine (через cri-dockerd). | ||
| 201 | |||
| 202 | В этом примере мы будем использовать «containerd» в качестве контейнера для нашего развертывания Kubernetes. Итак, вы установите containerd на все узлы Kubernetes. И есть несколько способов установить containerd, самый простой из них — использовать готовые бинарные пакеты, предоставленные репозиторием Docker. | ||
| 203 | |||
| 204 | Прежде чем добавить репозиторий, запустите приведенную ниже команду DNF, чтобы установить дополнительные инструменты \//dnf-util//s\. | ||
| 205 | |||
| 206 | {{{sudo dnf install dnf-utils}}} | ||
| 207 | |||
| 208 | Теперь выполните следующую команду, чтобы добавить репозиторий Docker для систем на базе CentOS. | ||
| 209 | |||
| 210 | {{{sudo yum-config-manager \ | ||
| 211 | --add-repo \ | ||
| 212 | https://download.docker.com/linux/centos/docker-ce.repo}}} | ||
| 213 | |||
| 214 | Выполните следующую команду, чтобы проверить репозитории в ваших системах Rocky Linux. Затем создайте новый кеш метаданных. Вы увидите, что репозиторий Docker добавлен в Rocky Linux. | ||
| 215 | |||
| 216 | {{{sudo dnf repolist | ||
| 217 | sudo dnf makecache}}} | ||
| 218 | |||
| 219 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/7-add-docker-repo-containerd.png]] | ||
| 220 | |||
| 221 | Затем установите пакет containerd с помощью приведенной ниже команды DNF. Введите Y, чтобы подтвердить установку, и нажмите ENTER, и установка начнется. Когда вас попросят импортировать ключ Docker GPG, введите y, чтобы добавить. | ||
| 222 | |||
| 223 | {{{sudo dnf install containerd.io}}} | ||
| 224 | |||
| 225 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/8-install-containerd.png]] | ||
| 226 | |||
| 227 | После завершения установки выполните следующую команду, чтобы создать резервную копию конфигурации containerd по умолчанию и создать новый файл конфигурации containerd. | ||
| 228 | |||
| 229 | {{{sudo mv /etc/containerd/config.toml /etc/containerd/config.toml.orig | ||
| 230 | sudo containerd config default > /etc/containerd/config.toml}}} | ||
| 231 | |||
| 232 | Теперь измените файл конфигурации containerd \///etc/containerd/config.toml//\, используя следующую команду. | ||
| 233 | |||
| 234 | {{{sudo nano /etc/containerd/config.toml}}} | ||
| 235 | |||
| 236 | Измените значение драйвера cgroup \SystemdCgroup=false\ на \SystemdCgroup=true\. Это включит драйвер systemd cgroup для среды выполнения контейнера containerd. | ||
| 237 | |||
| 238 | {{{[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] | ||
| 239 | ... | ||
| 240 | [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] | ||
| 241 | SystemdCgroup = true}}} | ||
| 242 | |||
| 243 | Когда вы закончите, сохраните и закройте файл. | ||
| 244 | |||
| 245 | Затем выполните следующую команду systemctl, чтобы запустить и включить службу containerd. Это добавит службу containerd для автоматического запуска при загрузке системы. | ||
| 246 | |||
| 247 | {{{sudo systemctl enable --now containerd}}} | ||
| 248 | |||
| 249 | Наконец, проверьте и подтвердите службу containerd, используя приведенную ниже команду. Вы должны увидеть, что containerd включен и будет запускаться автоматически при загрузке системы. И текущий статус службы containerd работает. | ||
| 250 | |||
| 251 | {{{sudo systemctl is-enabled containerd | ||
| 252 | sudo systemctl status containerd}}} | ||
| 253 | |||
| 254 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/9-start-enable-containerd.png]] | ||
| 255 | |||
| 256 | == Установка пакетов Kubernetes == | ||
| 257 | |||
| 258 | Вы установили среду выполнения контейнера containerd. Теперь вы установите пакеты Kubernetes на все свои системы Rocky Linux. Сюда входят kubeadm для начальной загрузки кластера Kubernetes, kubelet — основной компонент кластера Kubernetes и kubectl — утилита командной строки для управления кластером Kubernetes. | ||
| 259 | |||
| 260 | В этом примере мы будем устанавливать пакеты Kubernetes, используя репозиторий, предоставленный Kubernetes. Итак, вы добавите репозиторий Kubernetes во все свои системы Rocky Linux. | ||
| 261 | |||
| 262 | Выполните следующую команду, чтобы добавить репозиторий Kubernetes для операционных систем на базе RHEL/CentOS. | ||
| 263 | |||
| 264 | {{{cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo | ||
| 265 | [kubernetes] | ||
| 266 | name=Kubernetes | ||
| 267 | baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch | ||
| 268 | enabled=1 | ||
| 269 | gpgcheck=1 | ||
| 270 | gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg | ||
| 271 | exclude=kubelet kubeadm kubectl | ||
| 272 | EOF}}} | ||
| 273 | |||
| 274 | Теперь проверьте список репозиториев и сгенерируйте новый кеш метаданных с помощью приведенной ниже команды dnf. И вы должны увидеть, что репозиторий Kubernetes добавлен в системы Rocky Linux. | ||
| 275 | |||
| 276 | {{{sudo dnf repolist | ||
| 277 | sudo dnf makecache}}} | ||
| 278 | |||
| 279 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/10-add-kubernetes-repository.png]] | ||
| 280 | |||
| 281 | Затем установите пакеты Kubernetes с помощью следующей команды dnf. Введите Y, чтобы подтвердить установку, и нажмите ENTER, чтобы продолжить, и установка начнется. | ||
| 282 | |||
| 283 | {{{sudo dnf install kubelet kubeadm kubectl --disableexcludes=kubernetes}}} | ||
| 284 | |||
| 285 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/11-install-kubernetes-packages.png]] | ||
| 286 | |||
| 287 | После завершения установки выполните следующую команду systemctl, чтобы запустить и включить службу kubelet. Затем проверьте службу kubelet и убедитесь, что она включена и работает на всех узлах. | ||
| 288 | |||
| 289 | Эта служба является основной службой Kubernetes, которая будет ожидать любых событий при инициализации кластера или присоединении узла к кластеру. | ||
| 290 | |||
| 291 | {{{sudo systemctl enable --now kubelet}}} | ||
| 292 | |||
| 293 | == Установка плагина CNI: фланель == | ||
| 294 | |||
| 295 | Kubernetes поддерживает различные подключаемые модули Container Network, такие как AWS VPC для Kubernetes, Azure CNI, Cilium, Calico, Flannel и многие другие. В этом примере мы будем использовать Flannel в качестве подключаемого модуля CNI для развертывания Kubernetes. А для этого вам нужно было установить бинарный файл Flannel на узлы Kubernetes. | ||
| 296 | |||
| 297 | Выполните приведенную ниже команду, чтобы создать новый каталог \///opt/bin//\. Затем загрузите в него бинарный файл Flannel. | ||
| 298 | |||
| 299 | {{{mkdir -p /opt/bin/ | ||
| 300 | sudo curl -fsSLo /opt/bin/flanneld https://github.com/flannel-io/flannel/releases/download/v0.19.0/flanneld-amd64}}} | ||
| 301 | |||
| 302 | Теперь сделайте двоичный файл flanneld исполняемым, изменив разрешение файла с помощью приведенной ниже команды. Этот двоичный файл flanneld будет выполняться автоматически, когда вы настраиваете сетевое дополнение Pod. | ||
| 303 | |||
| 304 | {{{sudo chmod +x /opt/bin/flanneld}}} | ||
| 305 | |||
| 306 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/12-download-flanneld.png]] | ||
| 307 | |||
| 308 | == Инициализация плоскости управления Kubernetes == | ||
| 309 | |||
| 310 | Вы выполнили все зависимости и требования для развертывания кластера Kubernetes. Теперь вы запустите кластер Kubernetes, впервые инициализировав узел Control Plane. В этом примере Kubernetes Control Plane будет установлен на сервере «kubem-master» с IP-адресом «192.168.5.10». | ||
| 311 | |||
| 312 | Перед инициализацией узла Control Plane выполните следующую команду, чтобы проверить, включены ли модули ядра \//br_netfilter//\. Если вы получаете вывод команды, это означает, что модуль \//br_netfilter//\ включен. | ||
| 313 | |||
| 314 | {{{lsmod | grep br_netfilter}}} | ||
| 315 | |||
| 316 | Затем выполните следующую команду, чтобы загрузить образы, необходимые для кластера Kubernetes. Эта команда загрузит все образы контейнеров, необходимые для создания кластера Kubernetes, такие как coredns, сервер kube-api и т. д., kube-controller, kube-proxy и образ контейнера pause. | ||
| 317 | |||
| 318 | {{{sudo kubeadm config images pull}}} | ||
| 319 | |||
| 320 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/13-check-kernel-modules-download-images.png]] | ||
| 321 | |||
| 322 | После завершения загрузки выполните следующую команду \//kubeadm init//\, чтобы инициализировать кластер Kubernetes на сервере \kube-master\. Этот узел «kube-master» будет автоматически выбран в качестве плоскости управления Kubernetes, потому что это первая инициализация кластера. | ||
| 323 | |||
| 324 | |||
| 325 | * Кроме того, в этом примере мы указываем в качестве сети для модулей значение \10.244.0.0/16\, которое является диапазоном сети по умолчанию для подключаемого модуля Flannel CNI. | ||
| 326 | * ~-~-apiserver-advertise-address\ определяет, на каком IP-адресе будет работать сервер API Kubernetes. В этом примере используется внутренний IP-адрес 192.168.5.10\. | ||
| 327 | * Для параметра \~-~-cri-socket\ здесь мы указываем сокет CRI для сокета среды выполнения контейнера, доступного в \/run/containerd/containerd.sock\. Если вы используете другую среду выполнения контейнера, вы должны изменить путь к файлу сокета или можете просто удалить эту опцию \~-~-cri-socket\, потому что kubeadm автоматически обнаружит сокет среды выполнения контейнера. | ||
| 328 | |||
| 329 | |||
| 330 | {{{sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \ | ||
| 331 | --apiserver-advertise-address=192.168.5.10 \ | ||
| 332 | --cri-socket=unix:///run/containerd/containerd.sock}}} | ||
| 333 | |||
| 334 | Когда инициализация завершена, вы можете увидеть сообщение, такое как «Ваша плоскость управления Kubernetes успешно инициализирована!» с некоторыми важными выходными сообщениями для настройки учетных данных Kubernetes и развертывания сетевой надстройки Pod, как добавить рабочий узел в свой кластер Kubernetes. | ||
| 335 | |||
| 336 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/14-initilizing-control-plane-kubernetes.png]] | ||
| 337 | |||
| 338 | Прежде чем вы начнете использовать кластер Kubernetes, вам необходимо настроить учетные данные Kubernetes. Выполните следующую команду, чтобы настроить учетные данные Kubernetes. | ||
| 339 | |||
| 340 | {{{mkdir -p $HOME/.kube | ||
| 341 | sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config | ||
| 342 | sudo chown $(id -u):$(id -g) $HOME/.kube/config}}} | ||
| 343 | |||
| 344 | Теперь вы можете использовать команду \//kubectl//\ для взаимодействия с вашим кластером Kubernetes. Выполните следующую команду \//kubectl//\, чтобы проверить информацию о кластере Kubernetes. И вы должны увидеть плоскость управления Kubernetes и работающие ядра. | ||
| 345 | |||
| 346 | {{{kubectl cluster-info}}} | ||
| 347 | |||
| 348 | Чтобы получить полную информацию о вашем Kubernetes, вы можете использовать опцию дампа — так что //\kubectl cluster-info dump//\. | ||
| 349 | |||
| 350 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/15-setup-admin-credentials-and-check-cluster-info.png]] | ||
| 351 | |||
| 352 | После запуска плоскости управления Kubernetes выполните следующую команду, чтобы установить сетевой подключаемый модуль Flannel Pod. Эта команда автоматически запустит бинарный файл \flanneld\ и запустит некоторые фланелевые стручки. | ||
| 353 | |||
| 354 | {{{kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml}}} | ||
| 355 | |||
| 356 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/16-deploy-flannel-network.png]] | ||
| 357 | |||
| 358 | Проверьте список запущенных модулей в Kubernetes с помощью следующей команды. если ваша установка Kubernetes прошла успешно, вы должны увидеть, что все основные модули для Kubernetes, включая модули Flannel, работают. | ||
| 359 | |||
| 360 | {{{kubectl get pods --all-namespaces}}} | ||
| 361 | |||
| 362 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/17-check-pods-kubernetes.png]] | ||
| 363 | |||
| 364 | == Добавление рабочих узлов в Kubernetes == | ||
| 365 | |||
| 366 | После инициализации плоскости управления Kubernetes на сервере «kube-master» вы добавите рабочие узлы «kube-worker1» и «kube-worker2» в кластер Kubernetes. | ||
| 367 | |||
| 368 | Перейдите на сервер \kube-worker1\ и выполните приведенную ниже команду \kubeadm join\, чтобы добавить \kube-worker1\ в кластер Kubernetes. У вас могут быть другие токен и ca-cert-hash, вы можете увидеть подробную информацию об этой информации в выходном сообщении при инициализации узла Control Plane. | ||
| 369 | |||
| 370 | {{{kubeadm join 192.168.5.10:6443 --token wlg23u.r5x2nxw2vdu95dvp \ | ||
| 371 | --discovery-token-ca-cert-hash sha256:71fd28ac2b8108a3d493648a9c702acd2e39a8a0e7efc07326d7b0384c929066}}} | ||
| 372 | |||
| 373 | В следующем выводе вы можете видеть, что сервер \kube-worker1\ присоединен к кластеру Kubernetes. | ||
| 374 | |||
| 375 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/18-add-kube-worker1-to-cluster.png]] | ||
| 376 | |||
| 377 | Затем перейдите на сервер \kube-worker2\ и запустите команду \//kubeadm join//\, чтобы добавить \//kube-worker2//\ в Kubernetes. Кластер. | ||
| 378 | |||
| 379 | {{{kubeadm join 192.168.5.10:6443 --token wlg23u.r5x2nxw2vdu95dvp \ | ||
| 380 | --discovery-token-ca-cert-hash sha256:71fd28ac2b8108a3d493648a9c702acd2e39a8a0e7efc07326d7b0384c929066}}} | ||
| 381 | |||
| 382 | Вы увидите такое же выходное сообщение, когда процесс завершится. | ||
| 383 | |||
| 384 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/19-add-kube-worker2-to-cluster.png]] | ||
| 385 | |||
| 386 | Теперь вернитесь к серверу плоскости управления kube-master\ и выполните следующую команду, чтобы проверить все запущенные модули для всех пространств имен в кластере Kubernetes. Вы должны увидеть дополнительные модули для каждого компонента Kubernetes. | ||
| 387 | |||
| 388 | {{{kubectl get pods --all-namespaces}}} | ||
| 389 | |||
| 390 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/20-check-all-pods.png]] | ||
| 391 | |||
| 392 | Наконец, проверьте и подтвердите все доступные узлы в кластере Kubernetes с помощью приведенной ниже команды kubectl. Вы должны увидеть, что сервер kube-master работает в качестве плоскости управления Kubernetes, а \kube-worker1\ и\серверы kube-worker2\» работают как рабочий узел. | ||
| 393 | |||
| 394 | {{{kubectl get nodes -o wide}}} | ||
| 395 | |||
| 396 | [[image:https://ru.linux-console.net/common-images/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/21-check-nodes-kubernetes.png]] | ||
| 397 | |||
| 398 | == Заключение == | ||
| 399 | |||
| 400 | В рамках этого руководства вы завершили развертывание кластера Kubernetes с тремя серверами Rocky Linux. Кластер Kubernetes работает с одной плоскостью управления и двумя рабочими узлами. Он работает с containerd в качестве среды выполнения контейнера для вашего кластера Kubernetes и с сетевым плагином Flannel для сетевого подключения модулей в вашем кластере. Вы полностью настроили кластер Kubernetes, вы можете начать развертывание своих приложений в кластере Kubernetes или попробовать установить панель управления Kubernetes, чтобы узнать больше о вашей среде Kubernetes. |