## Требования [Requirements](./kubespray/README.md#requirements) ## Версия Kuberspray и Kubernetes у текущих инвентору | Kuberspray | v2.26.0 | |------------|---------| | Kubernetes | v1.30.4 | ## Особенности развертывания кластера | Модуль | Комментарий | |--------------------------|------------------------------------------------------------------------------------------| | Cluster name | k8s-avroid-office.prod.local | | Сеть | Только IPv4 | | Сеть | 172.24.0.0/18 - подсеть сервисов | | Сеть | 172.24.64.0/18 - подсеть подов | | Сеть | 30000-32767 - список портов, разрешённый к форвардингу на нодах | | Маска подсети на ноду | 24 (Итого - max 254 подов на ноде и max 64 ноды) | | CNI | calico | | NTP-клиенты | Настроены на локальные приватные NTP-сервера и московскую таймзону | | DNS zone | k8s-avroid-office.prod.local | | DNS | Dual CoreDNS + nodelocaldns | | Etcd | данные сервиса в /data/etcd на отдельном блочном устройстве с ext4) | | Container runtime | containerd (/var/lib/containerd на отдельном блочном устройстве с XFS) | | Приватный реестр образов | Используются приватные кеширующие зеркала с harbor.avroid.tech в настройках containerd | | Диски | Все ноды: /var/lib/containerd вынесен на отдельные блочное устройства с XFS | | Диски | k8s-control-0X: /data вынесен на отдельные блочное устройства с ext4 | | Диски | k8s-worker/build-0X: /var/lib/kubelet/pods вынесен на отдельные блочное устройства с XFS | | HA | API Server | | Ingress | Nginx ingress controller 80 --> 30080 (k8s-worker-0X), 443 --> 30081 (k8s-worker-0X) | | Ingress | Работает только на нодах с кастомной меткой `node-role.kubernetes.io/ingress-nginx:true` | | Дополнительные сервисы | Helm, Metrics Server, Cert manager, netchecker | ## Доступ до развёрнутых сервисов ### Ingress NGINX Controller https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme :30080/TCP --> nginx:80/TCP :30081/TCP --> nginx:443/TCP ### netchecker https://github.com/Mirantis/k8s-netchecker-server http://:31081/api/v1/agents/ http://:31081/api/v1/connectivity_check http://:31081/metrics ## Подготовка окружения для развёртывания и развёртывание ### 1. Предварительная подготовка ВМ Предварительно готовим ВМ основным набором спритов Ansible со следующими особенностями: - настраиваем дополнительные диски и точки монтирования - настраиваем авторизацию доменную - отключаем настройку NTP - отключаем настройку node_exporter ### 2. Обновляем подмодуль с Kubespray и проверяем что он стоит на необходимом тэге ```bash cd env/<ОКРУЖЕНИЕ_XX>/<КЛАСТЕР_XX> git submodule update --init --recursive cd kubespray git status cd ../../.. ``` ### 3. Готовим окружение Ansible [Kubespray docs: Ansible Python Compatibility](./kubespray/docs/ansible/ansible.md#ansible-python-compatibility) | Ansible Version | Python Version | |-----------------|----------------| | 2.11 | 2.7,3.5-3.9 | | 2.12 | 3.8-3.10 | | >=2.16.4 | 3.10-3.12 | ```bash cd env/<ОКРУЖЕНИЕ_XX>/<КЛАСТЕР_XX> export VENVDIR=kubespray-venv export KUBESPRAYDIR=kubespray python3 -m venv ./$VENVDIR source $VENVDIR/bin/activate pip3 install -U -r $KUBESPRAYDIR/requirements.txt ``` ### 4. Запускаем раскатку кластера ```bash cd env/<ОКРУЖЕНИЕ_XX>/<КЛАСТЕР_XX> export VENVDIR=kubespray-venv export KUBESPRAYDIR=kubespray source $VENVDIR/bin/activate cd $KUBESPRAYDIR ansible-playbook cluster.yml -i ../inventory/inventory.ini -bkK -v ``` ### 5. Копируем конфиг для подключения к кластеру через kubectl Копируем с любой из master-нод конфиг: ```text /etc/kubernetes/admin.conf ``` К себе на машину и правим, в опции `server` указываем вместо `127.0.0.1` внешний адрес мастер-ноды. Затем настраиваем любым удобным способом работу с кластером через него: [Kubespray docs: Access the kubernetes cluster](./kubespray/docs/getting_started/setting-up-your-first-cluster.md#access-the-kubernetes-cluster) ## Дополнительные действия с кластером через Kubespray Дополнительные теги: [Kubespray docs: Ansible tags](./kubespray/docs/ansible/ansible.md#ansible-tags) Добавление/удаление нод: [Kubespray docs: Adding/replacing a node](./kubespray/docs/operations/nodes.md) Обновление кластера: [Kubespray docs: Upgrading Kubernetes in Kubespray](./kubespray/docs/operations/upgrades.md)