Предварительная подготовка узлов
Перед установкой кластера global все узлы (узлы control plane и worker-узлы) должны пройти предварительную подготовку.
Эта страница относится к узлам, работающим под традиционной операционной системой, такой как RHEL, CentOS или Ubuntu, которые разворачивает по SSH. Некоторые из проверок ниже — например, пользователь SSH и параметры /etc/ssh/sshd_config — необходимы для сохранения работоспособности присоединения узла по SSH.
Содержание
Поддерживаемые версии ОС и ядраx86ARMВыполнение скрипта быстрой конфигурацииПроверки узловПриложениеУдаление конфликтующих пакетовНастройка домена поискаПоддерживаемые версии ОС и ядра
В следующей таблице перечислены поддерживаемые операционные системы, их проверенные версии и соответствующие протестированные версии ядра.
Платформа применяет строгие политики сопоставления версий для официальной поддержки:
- Версия ОС (x.y.z): исправляющие версии (
z) могут различаться, но основные и второстепенные версии (xиy) должны строго совпадать с проверенными версиями. Изменениеxилиyофициально не поддерживается. - Версия ядра (x.y.z-build): суффикс сборки (
build) может различаться, но базовая версия ядра (x.y.z) должна строго совпадать с протестированными версиями. Изменениеx.y.zофициально не поддерживается.
- Поддерживается только версия ядра, поставляемая с официальной операционной системой. Если ОС, версия ядра или архитектура CPU не соответствуют требованиям, обратитесь в техническую поддержку.
- В Kylin V10, V10-SP1 и V10-SP2 известны проблемы с ядром, которые могут вызывать сбои сетевого доступа NodePort; рекомендуется выполнить обновление до Kylin V10-SP3.
x86
- RHEL 7.8:
3.10.0-1127.el7.x86_64 - RHEL 8.0:
4.18.0-80.el8.x86_64 - RHEL 8.6:
4.18.0-372.9.1.el8.x86_64 - RHEL 8.10:
4.18.0-553 - RHEL 9.6:
5.14.0-570.12.1
Примечание: RHEL 7.8 не поддерживает Calico Vxlan IPv6.
ARM
- Kylin V10 SP3:
4.19.90-52.22.v2207.ky10.aarch64
Примечание: Архитектура ARM поддерживает только Kunpeng 920. Для других моделей обратитесь в техническую поддержку.
Выполнение скрипта быстрой конфигурации
Пакет установки предоставляет скрипт для быстрой настройки узлов.
Распакуйте установочный пакет, чтобы получить файл скрипта init.sh в каталоге res. Скопируйте файл скрипта на узлы и убедитесь, что у вас есть привилегии root.
Выполните скрипт:
init.sh не может гарантировать, что все следующие проверки будут выполнены корректно. Вам все равно необходимо продолжить выполнение шагов ниже.
Проверки узлов
Ниже перечислены все проверки, которые необходимо выполнить на узлах. В зависимости от роли узла требуемые проверки будут различаться. Например, некоторые проверки применяются только к узлам control plane.
Проверки разделены на две категории:
- ✅ Указывает на проверку, которая должна пройти.
- ⚠️ Указывает на проверку, которую необходимо выполнить в определенных сценариях. Определите, выполняются ли соответствующие условия, согласно инструкциям. Если да, необходимо устранить проблему.
Ниже приведен список проверок:
-
ОС и ядро
- ✅ В конфигурации загрузки grub на машине должен быть параметр
transparent_hugepage=never. - ✅ В конфигурации загрузки grub систем CentOS 7.x должен быть параметр
cgroup.memory=nokmem. - ✅ Проверьте, что модули ядра
ip_vs,ip_vs_rr,ip_vs_wrrиip_vs_shзагружены. - ⚠️ Если версия ядра ниже 4.19.0 (или версия RHEL ниже 4.18.0), проверьте, что модули ядра
nf_conntrack_ipv4и (для IPv6)nf_conntrack_ipv6загружены. - ⚠️ Если кластер
globalпланирует использовать CNIKube-OVN, модули ядраgeneveиopenvswitchдолжны быть загружены. - ✅ Отключите apparmor/selinux и firewall.
- ✅ Отключите
swap.
- ✅ В конфигурации загрузки grub на машине должен быть параметр
-
Пользователи и разрешения
- ✅ Пользователь SSH на узле имеет привилегии
rootи может использоватьsudoбез пароля. - ✅ Параметр
UseDNSв/etc/ssh/sshd_configдолжен быть установлен вno. - ✅ Перед добавлением узла установите параметр
UsePAMв/etc/ssh/sshd_configвno, затем перезапуститеsshd. Иначе политики сеанса PAM (например, принудительная смена пароля,pam_access,faillockилиpam_limits) могут заблокировать присоединение узла по SSH. После того как узел перейдет в состояниеReady, можно восстановитьUsePAM yes. На системах с включенным SELinux, использующих аутентификацию по паролю, значениеUsePAM noсамо по себе может нарушить вход по SSH; в таком случае используйте аутентификацию по ключу. - ✅
systemctl show --property=DefaultTasksMaxдолжен возвращатьinfinity; низкое ограничение (например, значение512по умолчанию в RHEL 7 / CentOS 7) приводит к тому, что активно работающие контейнеры не могут создавать потоки. Если значение не равноinfinity, задайтеDefaultTasksMax=infinityв/etc/systemd/system.confи выполнитеsystemctl daemon-reexec.
- ✅ Пользователь SSH на узле имеет привилегии
-
Сеть узла
- ✅
hostnameдолжен соответствовать следующим правилам:- Не более 36 символов.
- Начинается и заканчивается буквой или цифрой.
- Содержит только строчные буквы, цифры,
-и., но не может содержать.-,..или-..
- ✅
localhostв/etc/hostsдолжен разрешаться в127.0.0.1. - ✅ Файл
/etc/resolv.confдолжен существовать и содержать конфигурацииnameserver, но не должен содержать адреса, начинающиеся с 172 (отключитеsystemd-resolved). - ⚠️ В файле
/etc/resolv.confне должны быть настроены домены поиска (если их необходимо настроить, см. Настройка домена поиска). - ✅ IP-адрес машины не может быть адресом loopback, multicast, link-local, all-0 или broadcast.
- ✅ Выполнение
ip routeдолжно возвращать маршрут по умолчанию или маршрут, указывающий на0.0.0.0. - ✅ Узлы не должны занимать следующие порты:
- Узлы control plane:
2379,2380,6443,10249~10256 - Узел, на котором расположен установщик:
8080,12080,12443,16443,2379,2380,6443,10249~10256 - Worker-узлы:
10249~10256
- Узлы control plane:
- ✅ Если кластер использует Kube-OVN или Calico, убедитесь, что следующие порты не заняты:
- Kube-OVN:
6641,6642 - Calico:
179
- Kube-OVN:
- ⚠️ Убедитесь, что IP-адреса в сетевом сегменте
172.17.x.x~172.18.x.x, требуемыеnerdctl, не заняты. Если IP-адреса в этом сегменте заняты и их нельзя изменить, обратитесь в техническую поддержку.
- ✅
-
Требования к программному обеспечению и каталогам:
- ✅ Должны быть установлены следующие утилиты:
ip,ss,tar,swapoff,modprobe,sysctl,md5sumиscpилиsftp. - ⚠️ Если вы планируете использовать локальное хранилище TopoLVM или Rook, необходимо установить
lvm2. - ✅ Файл
/etc/systemd/system/kubelet.serviceне должен существовать. - ✅ Параметры монтирования
/tmpне должны содержатьnoexec. - ✅ Удалите пакеты, конфликтующие с компонентами кластера
global(см. Удаление конфликтующих пакетов). - ✅ Если существуют следующие файлы, их необходимо удалить:
/var/lib/docker/var/lib/nerdctl/opt/nerdctl//var/lib/containerd/var/log/pods/var/lib/kubelet/pki
- ✅ Должны быть установлены следующие утилиты:
-
Проверки между узлами
- ✅ Между узлами в кластере
globalне должно быть ограничений со стороны сетевого firewall. - ✅
hostnameкаждого узла в кластере должен быть уникальным. - ✅ Часовые пояса всех узлов должны быть одинаковыми, а ошибка синхронизации времени должна быть ≤ 10 секунд.
- ✅ Между узлами в кластере
Приложение
Удаление конфликтующих пакетов
Перед установкой приложения могут уже выполняться в окружении docker/nerdctl/containerd на узлах, либо на них может быть установлено ПО, конфликтующее с кластером global. Поэтому необходимо проверить и удалить конфликтующие пакеты.
- Во избежание прерывания работы приложений или потери данных обязательно подтвердите наличие конфликтующих пакетов. Если конфликт найден, разработайте план переключения приложения и создайте резервную копию данных перед удалением.
- После удаления конфликтующих пакетов все равно необходимо проверить наличие других потенциально конфликтующих двоичных файлов в каталогах, таких как
/usr/local/bin/(например, ПО, связанное с docker, nerdctl, containerd, runc, podman, сетями контейнеров, runtime контейнеров или Kubernetes).
Для справки можно использовать следующие команды.
Проверка:
Удаление:
Настройка домена поиска
В Linux OS файл /etc/resolv.conf используется для настройки параметров разрешения доменных имен DNS-клиента. Строка search задает путь поиска доменов для DNS-запросов.
Требования к конфигурации
- Количество доменов: количество доменов в строке
searchдолжно быть меньшеdomainCountLimit - 3(значениеdomainCountLimitпо умолчанию равно 32). - Длина одного домена: длина каждого доменного имени не должна превышать 253 символа.
- Общая длина символов: общее количество символов всех доменных имен и пробелов не должно превышать
MaxDNSSearchListChar(значение по умолчанию — 2048).
Пример
- Общее количество доменов — 3.
- Длина одного домена, например
domain1.com, составляет 11. - Общая длина символов составляет 35, то есть 11 + 11 + 11 + 2 (два пробела).
- Если строка
searchв файле/etc/resolv.confне соответствует указанным ограничениям, это может привести к сбоям DNS-запросов или снижению производительности. - Перед изменением файла
/etc/resolv.confрекомендуется создать его резервную копию.