Предварительная обработка узлов
Перед установкой кластера global все узлы (узлы управляющей плоскости и рабочие узлы) должны пройти предварительную обработку.
Содержание
Поддерживаемые версии ОС и ядра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 не гарантирует, что все перечисленные ниже проверки будут выполнены корректно. Вам необходимо продолжить выполнение следующих шагов.
Проверки узлов
Ниже перечислены все проверки, которые должны быть выполнены на узлах. В зависимости от роли узла требуемые проверки могут отличаться. Например, некоторые проверки применимы только к узлам управляющей плоскости.
Проверки разделены на две категории:
- ✅ Обозначает проверку, которую необходимо пройти.
- ⚠️ Обозначает проверку, которую нужно выполнить в определённых сценариях. Пожалуйста, определите, выполняются ли соответствующие условия согласно инструкциям. Если да, необходимо их устранить.
Список проверок:
-
ОС и ядро
- ✅ В конфигурации загрузчика 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 и брандмауэр.
- ✅ Отключите
swap.
- ✅ В конфигурации загрузчика grub машины должен присутствовать параметр
-
Пользователи и права
- ✅ SSH-пользователь узла должен иметь права
rootи возможность использоватьsudoбез пароля. - ✅ Параметры
UseDNSиUsePAMв/etc/ssh/sshd_configдолжны быть установлены вno. - ✅ Выполнение
systemctl show --property=DefaultTasksMaxдолжно возвращатьinfinityили очень большое значение; в противном случае отредактируйте/etc/systemd/system.conf.
- ✅ SSH-пользователь узла должен иметь права
-
Сеть узла
- ✅
hostnameдолжен соответствовать следующим правилам:- Не более 36 символов.
- Начинается и заканчивается буквой или цифрой.
- Содержит только строчные буквы, цифры,
-и., но не содержит последовательностей.-,..или-..
- ✅ В
/etc/hostslocalhostдолжен разрешаться в127.0.0.1. - ✅ Файл
/etc/resolv.confдолжен существовать и содержать конфигурацииnameserver, но не должен содержать адреса, начинающиеся с 172 (отключите systemd-resolved). - ⚠️ В файле
/etc/resolv.confне должно быть настроек поисковых доменов (если необходимо настроить, смотрите Настройка поискового домена). - ✅ IP-адрес машины не должен быть петлевым, многоадресным, локальным по ссылке, all-0 или широковещательным.
- ✅ Выполнение
ip routeдолжно возвращать маршрут по умолчанию или маршрут, указывающий на0.0.0.0. - ✅ Узлы не должны занимать следующие порты:
- Узлы управляющей плоскости:
2379,2380,6443,10249~10256 - Узел, где расположен установщик:
8080,12080,12443,16443,2379,2380,6443,10249~10256 - Рабочие узлы:
10249~10256
- Узлы управляющей плоскости:
- ✅ Если в кластере используется 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не должно быть ограничений сетевого брандмауэра. - ✅
hostnameкаждого узла в кластере должен быть уникальным. - ✅ Все узлы должны иметь одинаковый часовой пояс, а ошибка синхронизации времени должна быть ≤ 10 секунд.
- ✅ Между узлами кластера
Приложение
Удаление конфликтующих пакетов
Перед установкой на узлах могут уже работать приложения в средах docker/nerdctl/containerd или может быть установлено программное обеспечение, конфликтующее с кластером global. Поэтому необходимо проверить и удалить конфликтующие пакеты.
- Чтобы избежать прерывания работы приложений или потери данных, обязательно подтвердите наличие конфликтующего программного обеспечения. При обнаружении конфликта разработайте план переключения приложений и сделайте резервную копию данных перед удалением.
- После удаления конфликтующих пакетов необходимо проверить наличие других потенциально конфликтующих бинарных файлов в каталогах, таких как
/usr/local/bin/(например, программное обеспечение, связанное с docker, nerdctl, 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рекомендуется сделать его резервную копию.