Подготовка серверов
На этом этапе Kubernetes ещё не создаётся. Сначала подготавливаются все серверы: задаются параметры стенда, устанавливаются системные пакеты, среда запуска контейнеров и компоненты Kubernetes. После завершения этапа серверы должны быть готовы к созданию кластера.
На этой странице
- 1.1. Параметры стенда
- 1.2. Схема стенда и назначение серверов
- 1.3. Версии программного обеспечения
- 1.4. Установка базовых пакетов
- 1.5. Установка и настройка containerd
- 1.6. Настройка операционной системы для Kubernetes
- 1.7. Установка компонентов Kubernetes
- 1.8. Установка и настройка crictl
- 1.9. Установка Helm и автодополнения команд
- Проверка подготовки серверов
1.1. Параметры стенда
Перед началом развёртывания задайте имена и адреса серверов, а также свободный внешний IP-адрес для стенда.
CONTROL_PLANE_NODE="<control-plane-hostname>"
CONTROL_PLANE_IP="<control-plane-ip>"
DB_NODE="<db-worker-hostname>"
GPU_NODE="<gpu-worker-hostname>"
METALLB_IP="<free-loadbalancer-ip>"
Значения в угловых скобках <...> являются параметрами стенда и перед выполнением команд должны быть заменены на актуальные значения.
1.2. Схема стенда и назначение серверов
В стенде используются три роли: управляющий узел Kubernetes, узел инфраструктурных сервисов и узел с GPU. Дальнейшие команды явно указывают, где они должны выполняться.
Управляющий узел Kubernetes
containerd.io
kubelet
kubeadm
kubectl
cri-tools
helm
Рабочие узлы
containerd.io
kubelet
kubeadm
cri-tools
kubectl и Helm на рабочих узлах не требуются.
1.3. Версии программного обеспечения
Используйте указанные версии компонентов. Это уменьшает риск несовместимости между Kubernetes, сетевыми компонентами, GPU Operator и прикладными сервисами.
Версии компонентов и приложений
| Компонент | Версия |
|---|---|
| Ubuntu | 24.04 LTS |
| containerd.io | 1.7.29 |
| Kubernetes | 1.35.6 |
| cri-tools / crictl | 1.35.0 |
| Helm CLI | 3.21.3 |
| Kubernetes pause image | 3.10.1 |
| ingress-nginx controller | v1.12.1 |
| NVIDIA GPU Driver | 580.126.09 |
| PostgreSQL | 16 |
| Redis | 8.8.0-alpine |
| RabbitMQ Cluster Operator | 2.21.1 |
| RabbitMQ Messaging Topology Operator | 1.19.3 |
| RabbitMQ | 4.2.6-management |
| Qdrant | v1.19.0 |
| MinIO | RELEASE.2025-07-23T15-54-02Z |
| Docling Serve (опциональный компонент) | 1.20.0 |
| vLLM | v0.25.1 |
Версии Helm-пакетов
| Компонент | Версия |
|---|---|
| cilium/cilium | 1.16.5 |
| metallb/metallb | 0.14.9 |
| ingress-nginx/ingress-nginx | 4.12.1 |
| nvidia/gpu-operator | v25.10.1 |
| cert-manager | v1.20.3 |
| qdrant/qdrant | 1.19.0 |
| vllm/vllm-stack | 0.1.12 |
Пакетные версии:
containerd.io = 1.7.29-1~ubuntu.24.04~noble
kubeadm = 1.35.6-1.1
kubelet = 1.35.6-1.1
kubectl = 1.35.6-1.1
cri-tools = 1.35.0-1.1
1.4. Установка базовых пакетов
На всех серверах устанавливаются системные утилиты, которые используются на следующих этапах для загрузки пакетов, диагностики сети и работы с конфигурацией.
На всех узлах:
apt update
apt install -y \
gpg \
curl \
wget \
dnsutils \
vim \
telnet \
unzip \
bash-completion \
ca-certificates \
jq \
conntrack \
socat
1.5. Установка и настройка containerd
containerd используется Kubernetes для запуска контейнеров. Сначала подключается репозиторий и устанавливается пакет, затем создаётся итоговая конфигурация среды выполнения.
Установка containerd
На всех узлах:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: noble
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
Установка:
CONTAINERD_VERSION="1.7.29-1~ubuntu.24.04~noble"
apt install -y containerd.io="${CONTAINERD_VERSION}"
apt-mark hold containerd.io
Настройка containerd
На всех узлах сразу создаётся итоговый конфиг:
containerd config default \
| sed \
-e 's/SystemdCgroup = false/SystemdCgroup = true/g' \
-e 's#sandbox_image = ".*"#sandbox_image = "registry.k8s.io/pause:3.10.1"#g' \
> /etc/containerd/config.toml
Проверка:
grep -E 'sandbox_image|SystemdCgroup|^disabled_plugins' \
/etc/containerd/config.toml
Ожидается:
disabled_plugins = []
sandbox_image = "registry.k8s.io/pause:3.10.1"
SystemdCgroup = true
systemctl enable containerd
systemctl restart containerd
1.6. Настройка операционной системы для Kubernetes
Загружаются необходимые модули ядра и применяются системные параметры сети и файловой системы, требуемые для работы Kubernetes и контейнерной сети.
На всех узлах:
cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.inotify.max_user_instances = 8192
fs.inotify.max_user_watches = 524288
EOF
cat > /etc/sysctl.d/70-disable-ipv6.conf <<EOF
net.ipv6.conf.all.disable_ipv6 = 1
EOF
sysctl --system
1.7. Установка компонентов Kubernetes
На всех серверах подключается репозиторий Kubernetes. На управляющем узле устанавливаются административные утилиты, на рабочие узлы — компоненты, необходимые для подключения к кластеру.
Подключение репозитория Kubernetes
На всех узлах:
mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL \
https://pkgs.k8s.io/core:/stable:/v1.35/deb/Release.key \
| gpg --dearmor \
-o /usr/share/keyrings/kubernetes-apt-keyring.gpg
echo \
"deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg]
https://pkgs.k8s.io/core:/stable:/v1.35/deb/ /" \
> /etc/apt/sources.list.d/kubernetes.list
apt update
Установка пакетов Kubernetes
Управляющий узел
K8S_VERSION="1.35.6-1.1"
apt install -y \
kubelet="${K8S_VERSION}" \
kubeadm="${K8S_VERSION}" \
kubectl="${K8S_VERSION}"
apt-mark hold kubelet kubeadm kubectl
Инфраструктурный и рабочий узлы
K8S_VERSION="1.35.6-1.1"
apt install -y \
kubelet="${K8S_VERSION}" \
kubeadm="${K8S_VERSION}"
apt-mark hold kubelet kubeadm
1.8. Установка и настройка crictl
crictl используется для диагностики среды выполнения контейнеров. После установки ему задаётся сокет containerd.
Установка crictl
На всех узлах:
apt install -y cri-tools=1.35.0-1.1
apt-mark hold cri-tools
Настройка crictl
На всех узлах:
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: true
EOF
Проверка:
crictl info
До CNI ожидаемо:
RuntimeReady = true
NetworkReady = false
1.9. Установка Helm и автодополнения команд
Helm используется на управляющем узле для установки компонентов Kubernetes и приложения. Дополнительно включается автодополнение команд оболочки.
Установка Helm
Только на управляющем узле Kubernetes:
HELM_VERSION="v3.21.3"
wget "https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz"
tar -xf "helm-${HELM_VERSION}-linux-amd64.tar.gz" linux-amd64/helm
mv linux-amd64/helm /usr/local/bin/helm
rm -rf "helm-${HELM_VERSION}-linux-amd64.tar.gz" linux-amd64
Автодополнение команд
Управляющий узел
mkdir -p /etc/bash_completion.d/
kubectl completion bash > /etc/bash_completion.d/kubectl
crictl completion bash > /etc/bash_completion.d/crictl
helm completion bash > /etc/bash_completion.d/helm
Инфраструктурный / рабочий узлы
mkdir -p /etc/bash_completion.d/
crictl completion bash > /etc/bash_completion.d/crictl
Проверка подготовки серверов
Перед созданием кластера проверьте, что версии ключевых пакетов зафиксированы и не будут автоматически обновлены системой.
Управляющий узел
apt-mark showhold
Ожидается:
containerd.io
cri-tools
kubeadm
kubectl
kubelet
Инфраструктурный / рабочий узлы
apt-mark showhold
Ожидается:
containerd.io
cri-tools
kubeadm
kubelet