Установка Kubernetes на Ubuntu Server 22.04 LTS
Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Kubernetes на Ubuntu Server 22.04 LTS.
Kubernetes — открытое программное обеспечение для оркестровки контейнеризированных приложений — автоматизации их развертывания, масштабирования и координации в условиях кластера.
В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 22.04 LTS.
Подробно о том, как установить Ubuntu Server 22.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 22.04 LTS”.
Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.
Для установки OpenSSH на сервер вы можете воспользоваться командой:
Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.
В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.
Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:
Kubernetes Master (Control Plane):
- TCP порт 6443 - для работы Kubernetes API.
- TCP порт 2379-2380 - для работы etcd server client API.
- TCP порт 10250 - для работы Kubelet API.
- TCP порт 10259 - для работы kube-scheduler.
- TCP порт 10257 - для работы kube-controller-manager.
Kubernetes Worker:
- TCP порт 0250 - для работы Kubelet API.
- TCP порт 30000-32767 - для работы NodePort Services.
Мы будем рассматривать установку одного сервера с ролью Master и одного сервера с ролью Worker. В дальнейшем вы сможете самостоятельно добавить необходимое количество серверов для обеспечения высокой доступности.
Подключаемся к серверу, на который планируется установить роль Kubernetes Master.
Присвоим имя серверу с помощью команды:
В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”.
Сервер с ролью Worker должен разрешать имя сервера с ролью Master, и также сервер с ролью Master должен разрешать имя сервера с ролью Worker.
Далее в файл “/etc/hosts” добавим IP-адрес и имя сервера с ролью Master с помощью команды:
Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.
В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.5.140.
Убедитесь, что имя сервера с ролью Worker имеет правильную запись DNS, а также обновите файл “/etc/hosts” на сервере с помощью команды:
Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.
В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-worker-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.6.19.
Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:
Проверим корректность имени сервера с помощью команды:
Теперь заменим текущий процесс оболочки на новый с помощью команды:
Далее необходимо отключить файл подкачки с помощью команды:
Команда выше отключает файл подкачки до тех пор, пока система не будет перезагружена. Мы должны убедиться, что он останется выключенным даже после перезагрузки. Для этого нужно отредактировать файл “fstab”, закомментировав строку “/swapfile” символом “#”.
Выполняем команду:
Загрузите модули ядра с помощью команды:
Загружаем модуль “overlay” с помощью команды:
Загружаем модуль “br_netfilter” с помощью команды:
Установите параметры ядра для Kubernetes с помощью команды:
Применим внесенные изменения с помощью команды:
Теперь добавим официальный ключ Docker с помощью команды:
Далее подключаем репозиторий Docker с помощью команды:
Нажимаем на кнопку “Enter”.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Теперь установим пакеты, необходимые для работы Kubernetes, с помощью команды:
Теперь необходимо настроить containerd.
containerd - стандартная среда выполнения контейнеров с упором на простоту, надежность и переносимость.
Выполняем команду:
Выполняем команду:
Перезапустим containerd, чтобы применить внесенные изменения, с помощью команды:
Включаем автозапуск сервиса containerd при запуске операционной системы с помощью команды:
Теперь добавим официальный ключ Kubernetes с помощью команды:
Далее подключаем репозиторий Kubernetes с помощью команды:
Обратите внимание, на момент написания этого руководства Xenial является актуальным репозиторием Kubernetes, но когда репозиторий будет доступен для Ubuntu 22.04 (Jammy Jellyfish), то вам нужно будет заменить слово в команде выше с “xenial” на “jammy”.
Нажимаем на кнопку “Enter”.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Теперь установим пакеты kubelet, kubeadm и kubectl с помощью команды:
На следующем шаге нужно запретить автоматическое обновление и удаление установленных пакетов с помощью команды:
Теперь необходимо запустить инициализацию кластера Kubernetes с помощью команды:
В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”.
Обратите внимание, для добавления еще одного сервера в кластер вам потребуется проделать такую же работу по установке и настройке сервера, а затем выполнить команду kubeadm join с соответствующим токеном для сервера с ролью Master или Worker.
Далее необходимо выполнить несколько команд, чтобы начать взаимодействие с кластером.
Выполняем команду:
Выполняем команду:
Выполняем команду:
Далее можно посмотреть адреса мастера и сервисов с помощью команды:
Теперь можно посмотреть список всех узлов в кластере и статус каждого узла с помощью команды:
Подключаемся к серверу, на который планируется установить роль Kubernetes Worker.
Присвоим имя серверу с помощью команды:
В данном руководстве в качестве имени сервера с ролью Worker используется “kubernetes-worker-1.heyvaldemar.net”.
Сервер с ролью Worker должен разрешать имя сервера с ролью Master, и также сервер с ролью Master должен разрешать имя сервера с ролью Worker.
Далее в файл “/etc/hosts” добавим IP-адрес и имя сервера с ролью Master с помощью команды:
Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.
В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-worker-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.6.19.
Убедитесь, что имя сервера с ролью Worker имеет правильную запись DNS, а также обновите файл “/etc/hosts” на сервере с помощью команды:
Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Kubernetes даже без записи DNS.
В данном руководстве в качестве имени сервера с ролью Master используется “kubernetes-master-1.heyvaldemar.net”, а в качестве IP-адреса 10.0.5.140.
Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:
Проверим корректность имени сервера с помощью команды:
Теперь заменим текущий процесс оболочки на новый с помощью команды:
Далее необходимо отключить файл подкачки с помощью команды:
Команда выше отключает файл подкачки до тех пор, пока система не будет перезагружена. Мы должны убедиться, что он останется выключенным даже после перезагрузки. Для этого нужно отредактировать файл “fstab”, закомментировав строку “/swapfile” символом “#”.
Выполняем команду:
Загрузите модули ядра с помощью команды:
Загружаем модуль “overlay” с помощью команды:
Загружаем модуль “br_netfilter” с помощью команды:
Установите параметры ядра для Kubernetes с помощью команды:
Применим внесенные изменения с помощью команды:
Теперь добавим официальный ключ Docker с помощью команды:
Далее подключаем репозиторий Docker с помощью команды:
Нажимаем на кнопку “Enter”.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Теперь установим пакеты, необходимые для работы Kubernetes, с помощью команды:
Теперь необходимо настроить containerd.
containerd - стандартная среда выполнения контейнеров с упором на простоту, надежность и переносимость.
Выполняем команду:
Выполняем команду:
Перезапустим containerd, чтобы применить внесенные изменения, с помощью команды:
Включаем автозапуск сервиса containerd при запуске операционной системы с помощью команды:
Теперь добавим официальный ключ Kubernetes с помощью команды:
Далее подключаем репозиторий Kubernetes с помощью команды:
Обратите внимание, на момент написания этого руководства Xenial является актуальным репозиторием Kubernetes, но когда репозиторий будет доступен для Ubuntu 22.04 (Jammy Jellyfish), то вам нужно будет заменить слово в команде выше с “xenial” на “jammy”.
Нажимаем на кнопку “Enter”.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Теперь установим пакеты kubelet, kubeadm и kubectl с помощью команды:
На следующем шаге нужно запретить автоматическое обновление и удаление установленных пакетов с помощью команды:
Далее необходимо добавить сервер с ролью Worker в кластер Kubernetes с помощью команды:
Сервер с ролью Worker успешно присоединен к кластеру Kubernetes.
Возвращаемся на сервер с ролью Kubernetes Master.
Теперь можно посмотреть список всех узлов в кластере и статус каждого узла с помощью команды:
Узлы находятся статусе “NotReady”. Чтобы это исправить нужно установить CNI (Container Network Interface) или сетевые надстройки, такие как Calico, Flannel и Weave-net.
Загрузим манифест Calico с помощью команды:
Установим Calico с помощью команды:
Проверим статус подов в пространстве имен kube-system с помощью команды:
Теперь можно посмотреть список всех узлов в кластере и статус каждого узла с помощью команды:
Узлы находятся статусе “Ready” и кластер Kubernetes готов к работе.
Мои курсы
🎓 Погрузитесь в мои обширные курсы по информационным технологиям, разработанные как для энтузиастов, так и для профессионалов. Независимо от того, хотите ли вы освоить Docker, покорить Kubernetes или углубить свои навыки в области DevOps, мои курсы предлагают структурированный путь к повышению вашего технического мастерства.
Мои услуги
💼 Загляните в мой каталог услуг и узнайте, как мы можем сделать вашу технологическую жизнь лучше. Будь то повышение эффективности вашей IT-инфраструктуры, развитие вашей карьеры или расширение технологических горизонтов — я здесь, чтобы помочь вам достичь ваших целей. От DevOps-трансформаций до сборки игровых компьютеров — давайте сделаем ваши технологии непревзойденными!
Пополнить запасы моего кофе
💡 Telegram | Boost
💖 PayPal
🏆 Patreon
💎 GitHub
🥤 BuyMeaCoffee
🍪 Ko-fi
Подпишись
⭐ Telegram | Блог
🎬 YouTube
🐦 Twitter
🎨 Instagram
🐘 Mastodon
🧵 Threads
🎸 Facebook
🧊 Bluesky
🎥 TikTok
💻 LinkedIn
📣 daily.dev Squad
🧩 LeetCode
🐈 GitHub
Этот контент создан искусственным интеллектом?
Нет! Каждая статья — результат моей работы, наполненной страстью к Docker и десятилетиями опыта в IT. Я применяю ИИ для улучшения грамматики, чтобы обеспечить четкость технических деталей, однако все идеи, стратегии и рекомендации исключительно мои. Этот метод иногда может вызывать срабатывание детекторов ИИ, но можете быть уверены, что вся представленная информация и опыт — подлинно мои.