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

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

    Содержание

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

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

    INFO

    Поддерживается только версия ядра, поставляемая с официальной операционной системой. Версия ядра должна совпадать с протестированной версией (например, A.B.C); суффикс после дефиса («-») может отличаться.

    Если ОС, версия ядра или архитектура CPU не соответствуют требованиям, пожалуйста, обратитесь в техническую поддержку.

    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
    WARNING

    RHEL 7.8 не поддерживает Calico Vxlan IPv6.

    ARM

    Kylin Linux Advanced Server
    • Kylin V10 SP3: 4.19.90-52.22.v2207.ky10.aarch64
    WARNING
    • В Kylin V10, V10-SP1 и V10-SP2 известны проблемы с ядром, которые могут вызывать сбои сетевого доступа NodePort; рекомендуется обновиться до Kylin V10-SP3.
    • Архитектура ARM поддерживает только Kunpeng 920. Для других моделей обратитесь в техническую поддержку.

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

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

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

    Выполните скрипт:

    bash init.sh
    WARNING

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

      • ✅ SSH-пользователь узла должен иметь права root и возможность использовать sudo без пароля.
      • ✅ Параметры UseDNS и UsePAM в файле /etc/ssh/sshd_config должны быть установлены в no.
      • ✅ Выполнение systemctl show --property=DefaultTasksMax должно возвращать infinity или очень большое значение; в противном случае отредактировать /etc/systemd/system.conf.
    • Сеть узла

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

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