
Давайте освежим как развернуть кластер 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
Шаг 8. Проверка кластера
8.1. Проверьте состояние кластера с помощью команды:
# kubectl get nodes
8.2. Убедитесь, что все узлы находятся в состоянии 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.