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

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

    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
    WARNING

    init.sh не может гарантировать, что все следующие проверки будут корректно выполнены. Вам все равно нужно продолжить выполнение шагов ниже.

    Проверки узлов

    Ниже перечислены все проверки, которые необходимо выполнить на узлах. В зависимости от роли узла требуемые проверки будут различаться. Например, некоторые проверки применяются только к узлам control plane.

    Проверки разделены на две категории:

    • ✅ Обозначает проверку, которая должна пройти.
    • ⚠️ Обозначает проверку, которая должна быть выполнена в определенных сценариях. Определите, выполняются ли соответствующие условия, согласно инструкциям. Если да, их необходимо устранить.

    Ниже приведен список проверок:

    • OS и Kernel

      • ✅ В 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 планирует использовать 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 в режиме enforcing, использующих аутентификацию по паролю, сам по себе 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 не должен настраивать 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
        • Рабочие узлы: 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. Поэтому необходимо проверить и удалить конфликтующие пакеты.

    DANGER
    • Чтобы избежать прерывания работы приложений или потери данных, обязательно подтвердите наличие конфликтующих пакетов. При обнаружении конфликта разработайте план переключения приложений и выполните резервное копирование данных перед удалением.
    • После удаления конфликтующих пакетов все равно необходимо проверить, нет ли других потенциально конфликтующих двоичных файлов в каталогах вроде /usr/local/bin/ (например, ПО, связанного с docker, containerd, runc, podman, container network, container 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 OS файл /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 (два пробела).
    WARNING
    • Если строка search в файле /etc/resolv.conf не соответствует указанным ограничениям, это может привести к сбоям DNS-запросов или снижению производительности.
    • Перед изменением файла /etc/resolv.conf рекомендуется создать его резервную копию.