Предварительная обработка узлов
Перед установкой кластера 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 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 символов.
- Начинается и заканчивается буквой или цифрой.
- Содержит только строчные буквы, цифры,
-и., но не содержит последовательностей.-,..или-..
- ✅
localhostв/etc/hostsдолжен разрешаться в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
- Узлы управляющей плоскости:
- ✅ Если в кластере
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не должно быть ограничений сетевого брандмауэра. - ✅
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рекомендуется сделать резервную копию файла.