Ах, установка Kubernetes на RHEL 9 – это почти как приготовление борща: кажется, что всё просто, но если не добавить нужных специй и не соблюсти порядок, то вместо сытного обеда получишь бурю в кастрюле. Итак, вооружаемся терпением и командной строкой – сегодня мы погружаемся в мир узлов, портов и загадочного SELinux.
Начнем с того, что у нас есть два типа узлов.
Представьте их как два вида домашних питомцев: одни требуют 4 ГБ ОЗУ и 4 ядра процессора – такие себе котята, а другие – более прожорливые псы с 16 ГБ и 8 ядрами. Кстати, напомню анекдот про системного администратора: «Почему админы любят кошек? Потому что они тоже любят сидеть на клавиатуре и игнорировать команды».
В нашем случае «кошки» – это лёгкие узлы управления; «псы» – рабочие узлы. Надеюсь, ваши сервера ведут себя покладисто!
Перед тем как начать танцы с бубном в терминале, установим необходимые инструменты: nano (для тех, кто любит простоту), mc (классика жанра), iputils и curl (на случай если захотите заглянуть за кулисы сети). Знаете, почему админ всегда берет с собой nano?
Потому что vim он освоит только после третьей чашки кофе. Ну а bash-completion спасет от головной боли при наборе длиннющих команд.
Далее идёт магия именования хостов. Выглядит это примерно так: sudo hostnamectl set-hostname “kube-apiserver.kalyuzhnyy.ru” – звучит почти как заклинание из Гарри Поттера! Только вместо волшебной палочки у вас SSH-подключение к серверу.
Главное — не перепутать имена узлов иначе ваши контейнеры начнут спорить между собой кто главный.
И вот наступает момент истины — редактирование /etc/hosts на каждом узле. Добавляем IP-адреса и имена серверов словно расставляем гостей за праздничным столом. Можете представить себя диджеем на вечеринке сетевых протоколов!
Но будьте осторожны: если IP-адреса перепутаете — получите настоящий хаос в стиле русского роутера.
Теперь отключаем swap. Это как сказать вашему ноутбуку: «Дружище, отдыхать будем позже».
Swap — это подкачка памяти; Kubernetes не любит её включенной — мол, зачем нам ленивость? Помните анекдот про программиста который сказал: «Swap? Я лучше посплю!»?
Так вот наш кластер спать не собирается!
SELinux переводим в режим permissive — то есть он теперь наблюдает за происходящим без особого вмешательства. Как строгий учитель на дистанционном уроке: видит всё, но молчит (ну или почти). Если вдруг забудете переключить SELinux обратно — кластер может превратиться в настоящую зону боевых действий.
Переходим к настройке фаервола – тут начинается настоящее веселье! Чтобы открыть нужные порты для Kubernetes придется вспомнить все свои знания по firewall-cmd или просто закрыть глаза и нажимать Enter до победного конца.
Если у вас нет времени возиться с портами – можно просто выключить firewalld командой systemctl stop firewalld… Но предупреждаю сразу: так делают только отчаянные или те, кто хочет почувствовать вкус хаоса.
Настройка переадресации IPv4 и загрузка модулей overlay и br_netfilter напоминает попытки собрать мебель из IKEA без инструкции. Всё вроде есть под рукой, но пару деталей нужно поискать под диваном (или в sysctl.d).
Важно проверить lsmod | grep br_netfilter — чтобы убедиться, что модули действительно загружены; иначе вся сеть будет работать “как хочет”.
Для фанатов контейнеризации выбираем CRI-O вместо Docker или containerd – это как выбирать между разными сортами пельменей: все вкусные по-своему, но CRI-O сейчас модный тренд среди Kubernetes-гурманов.