Устранение неполадок в кластерах рабочих нагрузок Huawei Cloud Stack
Это руководство описывает сценарии устранения неполадок, специфичные для кластеров рабочих нагрузок Huawei Cloud Stack (HCS), управляемых через Cluster API.
Если ваш кластер достигает Cluster.status.phase = Provisioned, но поток импорта не завершается, а узлы рабочих нагрузок остаются в состоянии NotReady, потому что отсутствует CNI, начните с независимого от провайдера руководства Устранение неполадок в кластере рабочих нагрузок, застрявшем в состоянии Provisioned. В этом руководстве описан общий диагностический поток (global controller импорта кластера, sentry ServiceAccount, инварианты clusters.platform.tkestack.io) для любого провайдера Immutable Infrastructure.
Если вы уже завершили общий поток и при этом также наблюдаются симптомы ниже, см. специфичный для HCS сценарий на этой странице.
Содержание
Сценарий: kubeadm init никогда не завершается, потому что имя хоста указано неверноДиагностикаМеры по устранениюПрофилактикаСвязанные материалыСценарий: kubeadm init никогда не завершается, потому что имя хоста указано неверно
Симптомы — все проявляются одновременно:
Cluster.status.phase=Provisioned,HCSCluster.status.ready=true, ELB поднят.HCSMachine.status.instanceState=ACTIVEс заполненнымInternalIP, ноMachine.status.nodeRefтак и не устанавливается.KubeadmControlPlane.status.initializedостается пустым, аstatus.readyReplicas=0по истечении обычного окна инициализации, составляющего примерно 5–10 минут.- Логи контроллера
cluster-api-provider-hcs(вcpaas-system) repeatedly выводятconnect: connection refusedпри обращении к VIP ELB управляющей плоскости на порт 6443. - Значение
HCSMachineConfigPool.spec.configs[].hostname, выбранное для узла, содержит точку (в стиле FQDN, напримерmaster-1.example.org).
В выпусках cluster-api-provider-hcs ранее v1.0.1 значение HCSMachineConfigPool.spec.configs[].hostname с точкой рендерится в cloud-init как полная строка FQDN в поле hostname с prefer_fqdn_over_hostname: true. В результате на узле получается имя хоста POSIX, содержащее точки, с которым kubeadm init не справляется, поэтому kube-apiserver так и не запускается.
Диагностика
Если у вас есть доступ к узлу (консоль HCS, jump host или debug pod внутри кластера):
Признаки того, что вы столкнулись именно с этим сценарием:
hostnameвозвращает полную строку с точками, а не только короткое имя.hostname -fвозвращаетName or service not knownилиTemporary failure in name resolution.- В
/etc/hostsнет строки вида<node-ip> <fqdn> <short>. - Пользовательские данные cloud-init на узле показывают
prefer_fqdn_over_hostname: trueи не задаютmanage_etc_hosts.
Меры по устранению
Обновите плагин cluster-api-provider-hcs до v1.0.1 или более поздней версии, затем выполните поочередную замену затронутых control plane и worker-узлов, чтобы новый cloud-init был выполнен на недавно загруженных VM. Пошаговая процедура описана в Настройка FQDN Hostname на существующих кластерах HCS.
Ручные изменения файлов /etc/hostname и /etc/hosts на существующем узле с неизменяемой ОС не сохраняются: cloud-init заново формирует эти файлы при каждой загрузке, включая перезагрузки, вызванные transactional-update, обновлением ОС или systemctl reboot. Поддерживаемый путь миграции — поочередная замена узлов.
Профилактика
Повторный запуск создания кластера при уже установленном cluster-api-provider-hcs версии v1.0.1 или более поздней полностью исключает этот сценарий. Новые манифесты для HCS должны следовать разделу Поведение имени хоста на узле на странице создания кластера при выборе между FQDN и короткими именами хостов в HCSMachineConfigPool.
Связанные материалы
- Устранение неполадок в кластере рабочих нагрузок, застрявшем в состоянии Provisioned — независимый от провайдера диагностический поток import-controller, который применяется до любого специфичного для HCS сценария на этой странице.
- Настройка FQDN Hostname на существующих кластерах HCS — процедура миграции с поочередной заменой узлов для кластеров, созданных до
cluster-api-provider-hcsv1.0.1. - Создание кластера в Huawei Cloud Stack — справочник по манифестам для новых кластеров, включая Поведение имени хоста на узле.