Предлагаю не душнить с описанием того, что такое kubernetes. Раз ты сюда пришёл, значит уже знаешь что это и скорее всего docker'a тебе стало мало
Данное пособие ни в коем случае не претендует на 100% мануал howto. Данное пособие, как и все статьи на этом сайте - это шпаргалка "как делал я и у меня это получилось"
Поехали.
Для организации не просто minikube, а реального кластера k8s и возможной реализации его в боевых условиях, были использованы виртуальные машины, обладающие следующими характеристиками:
CPU - 2 Core
RAM - 4 Gb
HDD - 20 Gb
NET - 10.0.0.0/24
Хостнеймы:
k8s-master
k8s-wn01, k8s-wn02, k8s-wn03
Перед выполнением работ необходимо отключить swap в /etc/fstab
Все действия выполняются от привилегированного пользователя root
Следующую последовательность необходимо выполнить на всех нодах
cat <<EOF | tee /etc/hosts 127.0.0.1 localhost 10.0.0.10 k8s-master 10.0.0.11 k8s-wn01 10.0.0.12 k8s-wn02 10.0.0.13 k8s-wn03 EOF
Добавляем необходимые модули ядра в автозапуск
cat <<EOF | tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
И загружаем их
modprobe overlay modprobe br_netfilter
Подправим возможность контроля обработки трафика через bridge в netfilter
сat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
Применим изменения
sysctl --system
Установим среду выполнения контейнеров
apt update apt install -y containerd
Сгенерируем дефолтный конфиг
mkdir -p /etc/containerd containerd config default | tee /etc/containerd/config.toml
Для стабильной работы движка необходимо включить SystemdCgroup. Давайте выебнемся и сделаем это sed’ом 😎
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
Опосля внесённых изменений рестартанём и добавим в автозапуск контейнерный движок
systemctl restart containerd systemctl enable containerd
Теперь устанавливаем kubernetes и компоненты, предварительно выяснив актуальную версию
apt install -y apt-transport-https ca-certificates curl gpg
Добавим ключ цифровой подписи
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Создадим файл репозитория
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.36/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
Обновляем кэш пакетов
apt update
ну и ставим заветное
apt install -y kubelet kubeadm kubectl
Для понимания
kubelet - сервис, контролирующий работу подов
kubeadm - управление кластером kubernetes
kubectl - утилита для ввода команд
Установка завершена! Для просмотра версии скомандуем
kubectl version --client --output=yaml
Инициализация кластера
Следующую последовательность необходимо выполнить только на мастере
kubeadm init --pod-network-cidr=10.244.0.0/27
Я взял 27 маску сети, которая вмещает в себя 29 реальных хостов. Не думаю, что в моей жизни продакшн кубов будет больше. Вы же исходите из своих хотелок
На какое-то время покажется, что сервер подвис. Надо будет подождать, пока не побегут букафффки и в конце появится Your Kubernetes control-plane has initialized successfully!