• Русский
  • Предварительная обработка узлов

    Перед установкой кластера global все узлы (узлы control plane и worker-узлы) должны пройти предварительную обработку.

    INFO

    Эта страница применяется к узлам, работающим под управлением традиционной операционной системы, такой как RHEL, CentOS или Ubuntu, которые разворачивает по SSH. Несколько проверок ниже — например, SSH-пользователь и параметры /etc/ssh/sshd_config — необходимы для сохранения работоспособности добавления узлов по SSH.

    Поддерживаемые версии ОС и ядра

    В следующей таблице перечислены поддерживаемые операционные системы, их проверенные версии и соответствующие протестированные версии ядра.

    Платформа применяет строгие правила соответствия версий для официальной поддержки:

    • Версия ОС (x.y.z): Патч-версии (z) могут различаться, но основные и дополнительные версии (x и y) должны строго совпадать с проверенными версиями. Изменение x или y официально не поддерживается.
    • Версия ядра (x.y.z-build): Суффикс сборки (build) может различаться, но базовая версия ядра (x.y.z) должна строго совпадать с протестированными версиями. Изменение x.y.z официально не поддерживается.
    INFO
    • Поддерживается только версия ядра, поставляемая с официальной операционной системой. Если ОС, версия ядра или архитектура CPU не соответствуют требованиям, обратитесь в техническую поддержку.
    • В Kylin V10, V10-SP1 и V10-SP2 известны проблемы с ядром, которые могут привести к сбоям доступа к сети NodePort; рекомендуется обновиться до Kylin V10-SP3.

    x86

    Red Hat Enterprise Linux (RHEL)
    CentOS
    Ubuntu
    Kylin Linux Advanced Server
    • 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 Linux Advanced Server
    • Kylin V10 SP3: 4.19.90-52.22.v2207.ky10.aarch64

    Примечание: Архитектура ARM поддерживает только Kunpeng 920. Для других моделей обратитесь в техническую поддержку.

    Выполните сценарий быстрой настройки

    Пакет установки предоставляет сценарий для быстрой настройки узлов.

    Распакуйте пакет установки, чтобы получить файл сценария init.sh в каталоге res. Скопируйте файл сценария на узлы и убедитесь, что у вас есть привилегии root.

    Выполните сценарий:

    bash init.sh
    ПРЕДУПРЕЖДЕНИЕ

    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 планирует использовать CNI Kube-OVN, модули ядра geneve и openvswitch должны быть включены.
      • ✅ Отключите apparmor/selinux и firewall.
      • ✅ Отключите swap.
    • Пользователи и права

      • ✅ 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.
    • Сеть узла

      • 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
      • ✅ Если кластер global использует Kube-OVN или Calico, убедитесь, что следующие порты не заняты:
        • Kube-OVN: 6641, 6642
        • Calico: 179
      • ⚠️ Убедитесь, что 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).

    Для справки можно использовать следующие команды.

    CentOS / RedHat
    Ubuntu
    Kylin

    Проверка:

    for x in \
        docker docker-client docker-common docker-latest \
        podman-docker podman \
        runc \
        containernetworking-plugins \
        apptainer \
        kubernetes kubernetes-master kubernetes-node kubernetes-client \
        ; do
        rpm -qa | grep -F "$x"
    done

    Удаление:

    for x in \
        docker docker-client docker-common docker-latest \
        podman-docker podman \
        runc \
        containernetworking-plugins \
        apptainer \
        kubernetes kubernetes-master kubernetes-node kubernetes-client \
        ; do
        yum remove "$x"
    done

    В Linux ОС файл /etc/resolv.conf используется для настройки параметров разрешения доменных имен DNS-клиента. Строка search задает путь поиска доменов для DNS-запросов.

    Требования к конфигурации

    • Количество доменов: Количество доменов в строке search должно быть меньше, чем domainCountLimit - 3 (значение domainCountLimit по умолчанию равно 32).
    • Длина одного домена: Каждый домен не должен превышать 253 символа.
    • Общая длина символов: Общее количество символов всех доменных имен и пробелов не должно превышать MaxDNSSearchListChar (значение по умолчанию — 2048).

    Пример

    search domain1.com domain2.com domain3.com
    • Общее количество доменов равно 3.
    • Длина одного домена, например domain1.com, составляет 11.
    • Общая длина символов составляет 35, то есть 11 + 11 + 11 + 2 (два пробела).
    ПРЕДУПРЕЖДЕНИЕ
    • Если строка search в файле /etc/resolv.conf не соответствует указанным выше ограничениям, это может привести к ошибкам DNS-запросов или снижению производительности.
    • Перед изменением файла /etc/resolv.conf рекомендуется создать его резервную копию.