ADG Оставить заявку
Блог DevOps 4 мин чтения

РЕД ОС 7.3 + kubeadm: разворачиваем кластер и смотрим, где отличия от ванильного Kubernetes

РЕД ОС 7.3 получила официально поддерживаемый дистрибутив Kubernetes - первый в реестре Минцифры. Проверяем kubeadm-кластер на практике и разбираем расхождения с CentOS.

Контекст момента

РЕД ОС 7.3 выпустила официально поддерживаемый дистрибутив Kubernetes, первым попавший в реестр отечественного ПО Минцифры

РЕД ОС 7.3 обзавелась официально поддерживаемым дистрибутивом Kubernetes - и это первый отечественный K8s-дистрибутив, попавший в реестр Минцифры. Для заказчиков с требованиями по реестровому ПО это меняет разговор: раньше Kubernetes на отечественной ОС был историей «ставим ванильный, скрестим пальцы», теперь есть поддерживаемый вариант с понятным вендором. Мы взяли стенд и прошлись по установке kubeadm-кластера, чтобы разобраться, насколько это отличается от привычного пути на CentOS 7/8.

Контекст: почему это важно прямо сейчас

С РЕД ОС мы работаем давно - в июле уже разбирали Podman на этой же системе. Тогда речь шла о контейнерах для CI/CD. Kubernetes - следующий логичный шаг для клиентов, которые хотят оркестрацию, но не могут использовать зарубежный стек. И если раньше приходилось объяснять «мы ставим upstream Kubernetes на отечественную ОС, поддержки нет», то теперь картина немного другая.

Что под капотом дистрибутива

Дистрибутив Kubernetes от РЕД ОС собран на базе upstream kubeadm, но переупакован в rpm и включён в официальный репозиторий. Версия - актуальная ветка 1.24.x. Это важно: не форк, не патчи к API, не самодельный scheduler. Стандартный Kubernetes, собранный и опубликованный под отечественным вендором.

Container runtime - containerd, что логично: dockershim вырезан ещё в 1.24, а Podman как замена Docker для K8s-узлов без CRI-реализации не подходит. Это та же история, которую мы наблюдали при миграции с PSP в 1.25 - Kubernetes методично убирает легаси.

Установка: что отличается от CentOS

Стенд - три виртуалки с РЕД ОС 7.3, один control plane, два worker. Проходили по официальной документации РЕД ОС, сверяясь с тем, что делали раньше на CentOS 8.

Репозиторий и пакеты. На CentOS подключали официальный репозиторий Google/Kubernetes и ставили kubeadm, kubelet, kubectl оттуда. На РЕД ОС всё это идёт из штатного репозитория системы - отдельный источник не нужен. Это плюс: меньше внешних зависимостей при закрытом периметре.

SELinux. На CentOS типичный совет - перевести SELinux в permissive или вообще отключить, потому что политики для Kubernetes там были кривые. В РЕД ОС 7.3 политики SELinux для Kubernetes переработаны и containerd работает в enforcing-режиме. Мы специально проверили: поды запускались без ошибок AVC в журнале. Это не мелочь - для ряда заказчиков с аттестованными системами enforcing-режим обязателен, и раньше это был реальный стопор.

firewalld. Та же история. На CentOS при развёртывании kubeadm часто отключали firewalld целиком - слишком много возни с правилами для etcd, API-сервера, kubelet и сетевых плагинов. В документации РЕД ОС прописаны конкретные правила для firewalld под каждую роль узла. Мы прошлись по ним - работает. Да, это несколько команд firewall-cmd, но зато systemd-сервис остаётся живым.

Сетевой плагин. Calico ставится стандартным манифестом - никаких сюрпризов. Flannel тоже работает. Мы проверяли Calico, потому что он нужен нескольким клиентам для NetworkPolicy.

Где всё же пришлось покопаться

cgroupv2. РЕД ОС 7.3 использует cgroupv2 по умолчанию. Containerd и kubelet с этим работают, но если поднимаете кластер впервые на cgroupv2, убедитесь, что в конфиге kubelet стоит cgroupDriver: systemd, а не дефолтный cgroupfs. Несоответствие - классическая причина, по которой kubelet стартует, но поды не поднимаются.

Helm. В репозитории РЕД ОС Helm отсутствует - ставится вручную бинарником с releases.helm.sh. Для закрытого контура надо заранее озаботиться зеркалом. Мелочь, но в первый раз спотыкаешься.

kubectl autocomplete. Bash-completion для kubectl на РЕД ОС требует явной установки пакета bash-completion перед kubectl completion bash >> ~/.bashrc. На CentOS это обычно уже стоит. Не критично, но раздражает.

Что в итоге

Кластер поднялся за разумное время, всё работает. Ощущение по сравнению с CentOS - процесс чище: меньше ручных обходов с SELinux и firewalld, всё из одного репозитория. Это не случайность - видно, что вендор целенаправленно готовил интеграцию.

Статус «первый в реестре Минцифры» для клиентов с 44-ФЗ и госзаказом - аргумент при закупке. Для нас как команды, которая ведёт кластеры в рамках managed-сопровождения, это значит появление нормального пути для заказчиков, которым нужен K8s, но без зарубежного вендора.

Остались вопросы за рамками этого стенда: насколько быстро идёт обновление версий K8s в дистрибутиве относительно upstream, и как выглядит процедура поддержки от РЕД СОФТ при инцидентах. Это покажет практика.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.