Как настроить узел k8s Windows с использованием Calico Operator

Вопрос или проблема

Я пробовал неделю правильно настроить узел Windows k8s с использованием Calico без успеха. Я следовал официальной документации Calico docs.tigera.io. Я пробовал как операторную, так и ручную установку без успеха. В обоих случаях я застрял на операциях HPC, так как мой мастер Linux не может перевести узел Windows в статус Ready. Вот шаги:

  1. Мои контейнеры находятся в AWS EC2, где у меня 1 мастер, 1 узел Linux и 1 узел Windows. Группы безопасности правильно настроены, и порты между мастером и узлами открыты.
  2. Мой узел Linux подключается без проблем (я развернул поды на мастере и узле Linux, и они работают как ожидалось)
  3. Я инициализировал свой кластер с помощью sudo kubeadm init --pod-network-cidr=192.168.0.0/16
  4. После этого я следовал установке Calico Operator с обновлениями для подов, чтобы разрешить только VXLAN и строгую аффинность

Вот как выглядят поды:

NAMESPACE          NAME                                      READY   STATUS    RESTARTS   AGE
calico-apiserver   calico-apiserver-844c7896b7-8qr98         1/1     Running   0          86m
calico-apiserver   calico-apiserver-844c7896b7-hhsfn         1/1     Running   0          86m
calico-system      calico-kube-controllers-98fbc76fb-x6p88   1/1     Running   0          86m
calico-system      calico-node-4c2vp                         1/1     Running   0          86m
calico-system      calico-node-cbhld                         1/1     Running   0          86m
calico-system      calico-typha-7b579d4b66-96jm4             1/1     Running   0          86m
calico-system      calico-typha-7b579d4b66-k2lkb             1/1     Running   0          86m
calico-system      csi-node-driver-84jlq                     2/2     Running   0          112m
calico-system      csi-node-driver-l5nmb                     2/2     Running   0          112m
kube-system        coredns-7db6d8ff4d-2hbs9                  1/1     Running   0          114m
kube-system        coredns-7db6d8ff4d-vlvfg                  1/1     Running   0          114m
kube-system        etcd-ip-172-16-8-123                      1/1     Running   9          115m
kube-system        kube-apiserver-ip-172-16-8-123            1/1     Running   9          115m
kube-system        kube-controller-manager-ip-172-16-8-123   1/1     Running   2          115m
kube-system        kube-proxy-566rb                          1/1     Running   0          113m
kube-system        kube-proxy-fkvv2                          1/1     Running   0          114m
kube-system        kube-proxy-windows-j4fgh                  1/1     Running   0          83m
kube-system        kube-scheduler-ip-172-16-8-123            1/1     Running   9          115m
tigera-operator    tigera-operator-76ff79f7fd-tj5pp          1/1     Running   0          113m

Узлы:

NAME              STATUS     ROLES           AGE    VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION    CONTAINER-RUNTIME
ec2amaz-5bu9t2v   NotReady   <none>          90m    v1.30.0   172.16.8.235   <none>        Windows Server 2022 Datacenter   10.0.20348.2402   containerd://1.7.1
ip-172-16-8-123   Ready      control-plane   115m   v1.30.0   172.16.8.123   <none>        Ubuntu 24.04 LTS                 6.8.0-1008-aws    containerd://1.7.16
ip-172-16-8-26    Ready      <none>          114m   v1.30.0   172.16.8.26    <none>        Ubuntu 24.04 LTS                 6.8.0-1008-aws    containerd://1.7.16
  1. Я настроил Windows Server 2022, следуя инструкциям из документации Calico. Все хорошо, пока не дошел до шага 6: Установите kube-proxy на узлы Windows (если kube-proxy не работает, вы должны установить и запустить kube-proxy на каждом из узлов Windows в вашем кластере). Я не был уверен, что именно имелось в виду, так как я понял, что использование конфигурации выполняется с помощью sig-windows-tools на узле мастера.
  2. Я скачал sig-windows-tools и изменил скрипты, чтобы они соответствовали моему кластеру. Я собрал все необходимые образы для Calico и kube-proxy и загрузил их в реестр AWS.
  3. Развернул без проблем.

Windows и Linux работают с containerd.

Kubernetes: 1.30.0
Calico: 3.28.0

Описание узла:

Ready            False   Tue, 21 May 2024 22:53:04 +0000   Tue, 21 May 2024 21:19:39 +0000   KubeletNotReady              container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cd

Описание от Win proxy:

k logs kube-proxy-windows-j4fgh -n kube-system
WARNING: The names of some imported commands from the module 'hns' include unapproved verbs that might make them less 
discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose 
parameter. For a list of approved verbs, type Get-Verb.
Running kub-proxy service.
Waiting for HNS network Calico to be created...

Я сейчас застрял и не понимаю, как сделать узел Windows Ready. Любая помощь будет оценена.

Проблема, с которой вы сталкиваетесь, все еще открыта: https://github.com/tigera/docs/issues/1547

Пожалуйста, следуйте этой инструкции. Это сработало для меня.

Ответ или решение

Как настроить Windows узел Kubernetes с использованием Calico Operator

Настройка Windows узла в кластере Kubernetes с использованием Calico может представлять собой вызов, как показано в вашем случае. В этой статье мы рассмотрим ключевые шаги для успешной интеграции Windows узлов в кластере Kubernetes, используя Calico для сетевого взаимодействия.

1. Установка и подготовка кластера

Перед тем как добавить Windows узлы, убедитесь, что ваш кластер Kubernetes настроен корректно. Вы указали, что ваш кластер уже имеет один мастер-узел и один Linux-узел, функционирующий без проблем, что является положительным знаком.

  • Инициализация кластера:
    sudo kubeadm init --pod-network-cidr=192.168.0.0/16

Этот шаг вы выполнили правильно, и это необходимо для создания сети Calico.

2. Установка Calico с помощью оператора

Поскольку вы используете Calico Operator, важно следовать официальной документации для корректной установки:

  1. Установите Calico Operator:
    Убедитесь, что вы установили Calico Operator, который будет управлять развертыванием ресурсов Calico:

    kubectl apply -f https://docs.projectcalico.org/manifests/calico-operator.yaml
  2. Настройка сети:
    Вам нужно будет изменить конфигурацию Calico в зависимости от ваших нужд. Убедитесь, что у вас правильно настроены параметры для использования VXLAN.

3. Настройка Windows узла

Теперь давайте рассмотрим конфигурации, связанные с вашим Windows узлом.

  • Подготовка Windows узла:
    Убедитесь, что Windows узел отвечает требованиям, указанным в документации Calico. Например, установка необходимого ПО, настройка параметров Docker и сети.
  1. Установка kube-proxy на Windows узле:
    Чтобы kube-proxy работал на Windows узле, убедитесь, что вы следовали рекомендациям по установке, указанным в документации. Это может включать:

    • Загрузка изображений для kube-proxy и их развертывание.
    • Убедитесь, что служба kube-proxy запущена:
    Start-Service kube-proxy

    Если kube-proxy не запускается, это может быть связано с проблемой создания HNS-сети.

4. Проблемы с сетью и статусом узла

Судя по вашему описанию, ваш Windows узел не находится в состоянии Ready. Статус NotReady с сообщением Network plugin returns error указывает на проблему с сетевым плагином.

  • Проверка состояния сети:
    Проверьте журналы kube-proxy для выявления возможных ошибок:

    kubectl logs kube-proxy-windows-j4fgh -n kube-system

    Убедитесь, что HNS-сеть "Calico" создана. Вы можете использовать PowerShell для проверки:

    Get-HnsNetwork

    Если HNS-сеть не создана, это может быть причиной вашей проблемы.

5. Дальнейшие шаги и устранение неполадок

  • Убедитесь, что все необходимые порты открыты:
    Проверьте настройки группы безопасности в AWS EC2. Убедитесь, что порты, необходимые для работы Kubernetes и Calico, открыты.

  • Проверка версий:
    Убедитесь, что версии Kubernetes и Calico совместимы друг с другом.

  • Использование ведю по установке с Calico Operator:
    Как меняется версия Calico, может изменяться и подход к установке. Обратите внимание на актуальную документацию на GitHub, например, установка Calico через оператора.

Заключение

Настройка Windows узла в кластере Kubernetes требует внимательности к деталям и последовательности в следовании документации. Каждый этап, от установки Calico до конфигурации kube-proxy, имеет значение. Если после выполнения всех этих шагов проблемы сохраняются, возможно, стоит обратиться к сообществу Kubernetes или Calico за дополнительной помощью. Удачи в настройке!

Оцените материал
Добавить комментарий

Капча загружается...