Установка и настройка кластера Kubernetes в Ubuntu Linux 22.04

Оцените статью

Давайте освежим как развернуть кластер Kubernetes в Ubuntu Linux 22.04 и у меня как раз появилось две небольшие (а главное дешевые) VPS в Adman.

Шаг 1. Подготовка

1.1. Убедитесь, что у вас есть доступ к компьютеру с операционной системой Ubuntu Linux.

~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.5 LTS
Release:        22.04
Codename:       jammy

1.2. Подготовьте необходимое оборудование: минимум один компьютер для мастера и один для узла (можно использовать виртуальные машины).

Установка базовых пакетов:

# apt-get install aptitude curl mc

Установите имя хоста в файлах:

  • /etc/hostname
  • /etc/hosts

Минимальные требования 2 ядра и 2 гигабайта оперативной памяти. Так-же обязательно отключите своп в /etc/fstab и выгрузите его содержимое в оперативную память.

# swapoff -a

1.3. Подготовка системы и сетевых параметров.

В файл /etc/modules-load.d/containerd.conf добавляем загрузку двух модулей:

overlay
br_netfilter

В файле /etc/sysctl.conf добавляем или изменяем параметры:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

Шаг 2. Обновление системы

2.1. Откройте терминал и выполните команду для обновления списка пакетов и обновите установленные пакеты до последних версий:

# apt-get update && apt-get upgrade

Шаг 3. Установка Docker

Обратите внимание, что современные версии Kubernetes не поддерживают стандартный Docker-engine и вам лучше использовать CRI-O.

Установка CRI-O

3.1. Экспортируем требуемую версию Kubernetes и CRI-O:

# KUBERNETES_VERSION=v1.32
# CRIO_VERSION=v1.32

3.2. Подключаем репозиторий:

# curl -fsSL https://download.opensuse.org/repositories/isv:/cri-o:/stable:/$CRIO_VERSION/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
# echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://download.opensuse.org/repositories/isv:/cri-o:/stable:/$CRIO_VERSION/deb/ /" | tee /etc/apt/sources.list.d/cri-o.list

3.3. Устанавливаем необходимый пакет:

# apt-get update
# apt-get install -y cri-o

3.4. Запускаем сервис и проверяем, что все работает.


# systemctl start crio.service
# systemctl enable crio.service

Для работы с CRI-O используется утилита crictl и это бинарный файл который можно скачать на GitHub например по адресу https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.33.0/crictl-v1.33.0-linux-amd64.tar.gz и разместить его в каталог /usr/local/bin.

Проверяем, что служба работает:

# crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                ATTEMPT             POD ID              POD                 NAMESPACE

Установка Docker Engine

Но если вам так хочется заморачиваться с отдельным уровнем абстракции, то установим Docker-engine. Но два движка лучше не ставить!

3.1. Установите необходимые зависимости:

# apt install -y apt-transport-https ca-certificates curl software-properties-common

3.2. Добавьте ключ GPG репозитория Docker:

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

3.3. Добавьте репозиторий Docker в список источников:

# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Repository: 'deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable'

3.4. Обновите список пакетов:

# apt update

3.5. Установите Docker:

# apt install -y docker-ce

Шаг 4. Установка Kubernetes

4.1. Добавьте ключ GPG репозитория Kubernetes:

# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

4.2. Добавьте репозиторий Kubernetes в список источников:

# echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

4.3. Обновите список пакетов:

# apt-get update

4.4. Установите kubeadm, kubelet и kubectl:

# apt install -y kubeadm kubelet kubectl

Шаг 5. Инициализация кластера

5.1. Инициализируйте кластер с помощью kubeadm:

# kubeadm init --pod-network-cidr=10.244.0.0/16

5.2. Следуйте инструкциям на экране для настройки kubectl для работы с кластером.

Экспортируем файл конфигурации:

# export KUBECONFIG=/etc/kubernetes/admin.conf

Проверяем доступность управляющего узла:

# kubectl get nodes

Шаг 6. Установка сети для контейнеров

6.1. Установите плагин сети для Kubernetes, например, Calico:

# kubectl apply -f https://dev.hsrn.nyu.edu/hsrn-projects/kubernetes-bare-metal/-/raw/0717ca13879fe1c2ce60759cd4ef20f05edbf5eb/k8s/calico.yml

Шаг 7. Добавление узлов в кластер

7.1. На каждом узле выполните команду, полученную при инициализации кластера, чтобы добавить узлы в кластер.

# kubeadm join 185.173.93.43:6443 --token akm4ce.xxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxx

Запрос токена для добавления узла в кластер

$ kubeadm token create --print-join-command

Шаг 7.1 Разрешаем сетевой доступ к кластеру

6443/TCP:Kubernetes API server. This is the primary entry point for all administrative and client interactions with the cluster.
2379-2380/TCP: etcd server client API. Used by the API server to communicate with etcd, the distributed key-value store that holds the cluster's configuration data.
10250/TCP:Kubelet API. Used by the API server and other components to communicate with the Kubelet agent running on each node.
10259/TCP:kube-scheduler. Used by the scheduler to watch for new pods and assign them to nodes.
10257/TCP:kube-controller-manager. Used by the controller manager to run various controllers that manage the cluster's state.
  • 10250/TCP: Kubelet API (read-only). Allows access to Kubelet’s read-only endpoints.
  • 30000-32767/TCP: NodePort Services. This is the default range for NodePort services, which expose services on a specific port on each worker node, making them accessible from outside the cluster.
  • 80/TCP or 443/TCP:Commonly used for exposing applications via Ingress controllers or LoadBalancer services.

Шаг 8. Проверка кластера

8.1. Проверьте состояние кластера с помощью команды:

# kubectl get nodes

8.1 Убедитесь, что все узлы находятся в состоянии Ready.

# kubectl get nodes
NAME                STATUS   ROLES           AGE   VERSION
srv-prod-adman-01   Ready    control-plane   17m   v1.30.13
srv-prod-adman-02   Ready    <none>          51s   v1.30.13

Это общая инструкция по установке и настройке кластера Kubernetes в Ubuntu Linux. В зависимости от вашей конфигурации и требований, могут потребоваться дополнительные шаги или настройки.

Обратите внимание, что для работы с Kubernetes рекомендуется использовать последнюю версию Ubuntu Linux и актуальные версии компонентов Kubernetes.

Похожие записи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

GlusterFS — это масштабируемая, распределённая файловая система с открытым исходным кодом, которая объединяет хранилища нескольких серверов в единое пространство имён. Она идеально подходит для создания отказоустойчивых и высокопроизводительных хранилищ, особенно…

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS