Предварительная подготовка узлов
Перед установкой кластера global все узлы (узлы control plane и worker-узлы) должны пройти предварительную подготовку.
Эта страница относится к узлам, работающим под традиционной операционной системой, такой как RHEL, CentOS или Ubuntu, которые развертывает по SSH. Некоторые проверки ниже — например, SSH-пользователь и параметры /etc/ssh/sshd_config — нужны для того, чтобы продолжал работать вход узлов через SSH. Если ваша среда работает на Immutable Infrastructure (Alauda OS on Huawei DCS, VMware vSphere или Huawei Cloud Stack), развертывание узлов выполняется на основе образов, и эта предварительная подготовка не применяется; вместо этого см. Установка кластера global на Immutable Infrastructure.
Содержание
Поддерживаемые версии OS и kernelx86ARMВыполнение скрипта быстрой конфигурацииПроверки узловПриложениеУдаление конфликтующих пакетовНастройка search-доменаПоддерживаемые версии OS и kernel
В следующей таблице перечислены поддерживаемые операционные системы, их проверенные версии и соответствующие протестированные версии kernel.
Платформа применяет строгие правила сопоставления версий для официальной поддержки:
- Версия OS (x.y.z): патч-версии (
z) могут отличаться, но major- и minor-версии (xиy) должны строго соответствовать проверенным версиям. Изменениеxилиyофициально не поддерживается. - Версия kernel (x.y.z-build): суффикс сборки (
build) может отличаться, но базовая версия kernel (x.y.z) должна строго соответствовать протестированным версиям. Изменениеx.y.zофициально не поддерживается.
- Поддерживается только версия kernel, поставляемая вместе с официальной операционной системой. Если OS, версия kernel или архитектура CPU не соответствуют требованиям, обратитесь в техническую поддержку.
- В версиях Kylin V10, V10-SP1 и V10-SP2 известны проблемы с kernel, которые могут вызывать сбои сетевого доступа 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.
Проверки разделены на две категории:
- ✅ Обозначает проверку, которая должна пройти.
- ⚠️ Обозначает проверку, которая должна быть выполнена в определенных сценариях. Определите, выполняются ли соответствующие условия, согласно инструкциям. Если да, их необходимо устранить.
Ниже приведен список проверок:
-
OS и kernel
- ✅ В grub-конфигурации загрузки машины должен быть параметр
transparent_hugepage=never. - ✅ В grub-конфигурации загрузки системы CentOS 7.x должен быть параметр
cgroup.memory=nokmem. - ✅ Проверьте, что модули kernel
ip_vs,ip_vs_rr,ip_vs_wrrиip_vs_shвключены. - ⚠️ Если версия kernel ниже 4.19.0 (или RHEL ниже 4.18.0), проверьте, что модули kernel
nf_conntrack_ipv4и (для IPv6)nf_conntrack_ipv6включены. - ⚠️ Если кластер
globalпланирует использовать CNIKube-OVN, модули kernelgeneveи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не следует настраивать search-домены (если их необходимо настроить, см. Настройка search-домена). - ✅ 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).
Для справки можно использовать следующие команды.
Проверка:
Удаление:
Настройка search-домена
В 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рекомендуется создать его резервную копию.