Предварительная обработка узлов
Перед установкой кластера global все узлы (узлы управляющей плоскости и рабочие узлы) должны пройти предварительную обработку.
Содержание
Поддерживаемые версии ОС и ядра
В следующей таблице перечислены поддерживаемые операционные системы, их проверенные версии и соответствующие протестированные версии ядра.
Поддерживается только версия ядра, поставляемая с официальной операционной системой. Версия ядра должна совпадать с протестированной версией (например, A.B.C); суффикс после дефиса («-») может отличаться.
Если ОС, версия ядра или архитектура CPU не соответствуют требованиям, пожалуйста, обратитесь в техническую поддержку.
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
- В Kylin V10, V10-SP1 и V10-SP2 известны проблемы с ядром, которые могут вызывать сбои сетевого доступа NodePort; рекомендуется обновиться до Kylin V10-SP3.
- Архитектура 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
- Узлы управляющей плоскости:
- ✅ Если в кластере
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рекомендуется сделать резервную копию файла.