Предварительная обработка узлов
Перед установкой кластера 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 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. - ✅ На системах CentOS 7.x в конфигурации загрузки grub должен присутствовать параметр
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:
- ✅ Если кластер
globalиспользует Kube-OVN или Calico, убедитесь, что следующие порты не заняты:- Kube-OVN:
6641,6642 - Calico:
179
- Kube-OVN:
- ⚠️ Убедитесь, что IP-адреса в сетевом сегменте
172.16.x.x~172.32.x.x, требуемом Docker, не заняты. Если 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/containerd/var/log/pods/var/lib/kubelet/pki
- ✅ Должны быть установлены следующие утилиты:
-
Проверки между узлами
- ✅ Между узлами кластера
globalне должно быть сетевых ограничений firewall. - ✅
hostnameкаждого узла в кластере должен быть уникальным. - ✅ Часовые пояса всех узлов должны быть едиными, а ошибка синхронизации времени должна быть ≤ 10 секунд.
- ✅ Между узлами кластера
Приложение
Удаление конфликтующих пакетов
Перед установкой на узлах уже могут выполняться приложения в среде docker/containerd, либо может быть установлено ПО, конфликтующее с кластером global. Поэтому необходимо проверить и удалить конфликтующие пакеты.
- Чтобы избежать прерывания работы приложений или потери данных, обязательно проверьте наличие конфликтующих пакетов. При обнаружении конфликта разработайте план переключения приложений и выполните резервное копирование данных перед удалением.
- После удаления конфликтующих пакетов вам по-прежнему нужно проверить, нет ли других потенциально конфликтующих бинарных файлов в каталогах вроде
/usr/local/bin/(например, связанных с docker, containerd, runc, podman, сетями контейнеров, контейнерным runtime или Kubernetes).
Для справки можно использовать следующие команды.
Проверка:
Удаление:
Настройка домена поиска
В Linux ОС файл /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рекомендуется создать его резервную копию.