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

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

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

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

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

    • Версия ОС (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 8.10: 4.18.0-553
    • RHEL 9.6: 5.14.0-570.12.1

    Примечание: 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 не гарантирует, что все перечисленные ниже проверки будут корректно выполнены. Вам всё равно необходимо продолжить выполнение следующих шагов.

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

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

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

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

    Список проверок:

    • ОС и ядро

      • ✅ В конфигурации загрузчика 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
      • ✅ Если кластер использует Kube-OVN или Calico, убедитесь, что следующие порты не заняты:
        • Kube-OVN: 6641, 6642
        • Calico: 179
      • ⚠️ Убедитесь, что IP-адреса в сетевом сегменте 172.17.x.x ~ 172.18.x.x, необходимых для nerdctl, не заняты. Если 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/nerdctl
        • /opt/nerdctl/
        • /var/lib/containerd
        • /var/log/pods
        • /var/lib/kubelet/pki
    • Межузловые проверки

      • ✅ Между узлами кластера global не должно быть ограничений сетевого файрвола.
      • hostname каждого узла в кластере должен быть уникальным.
      • ✅ Все узлы должны иметь одинаковый часовой пояс, а ошибка синхронизации времени должна быть ≤ 10 секунд.

    Приложение

    Удаление конфликтующих пакетов

    Перед установкой на узлах могут уже работать приложения в окружении docker/nerdctl/containerd или может быть установлено программное обеспечение, конфликтующее с кластером global. Поэтому необходимо проверить и удалить конфликтующие пакеты.

    ОПАСНОСТЬ
    • Чтобы избежать прерывания работы приложений или потери данных, обязательно убедитесь в наличии конфликтующих программных пакетов. При обнаружении конфликта разработайте план переключения приложений и сделайте резервную копию данных перед удалением.
    • После удаления конфликтующих пакетов необходимо проверить наличие других потенциально конфликтующих бинарных файлов в каталогах, таких как /usr/local/bin/ (например, программное обеспечение, связанное с docker, nerdctl, 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 рекомендуется сделать резервную копию файла.