Вопрос или проблема
Я пробовал неделю правильно настроить узел Windows k8s с использованием Calico без успеха. Я следовал официальной документации Calico docs.tigera.io. Я пробовал как операторную, так и ручную установку без успеха. В обоих случаях я застрял на операциях HPC, так как мой мастер Linux не может перевести узел Windows в статус Ready. Вот шаги:
- Мои контейнеры находятся в AWS EC2, где у меня 1 мастер, 1 узел Linux и 1 узел Windows. Группы безопасности правильно настроены, и порты между мастером и узлами открыты.
- Мой узел Linux подключается без проблем (я развернул поды на мастере и узле Linux, и они работают как ожидалось)
- Я инициализировал свой кластер с помощью
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
- После этого я следовал установке 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
- Я настроил Windows Server 2022, следуя инструкциям из документации Calico. Все хорошо, пока не дошел до шага 6: Установите kube-proxy на узлы Windows (если kube-proxy не работает, вы должны установить и запустить kube-proxy на каждом из узлов Windows в вашем кластере). Я не был уверен, что именно имелось в виду, так как я понял, что использование конфигурации выполняется с помощью sig-windows-tools на узле мастера.
- Я скачал sig-windows-tools и изменил скрипты, чтобы они соответствовали моему кластеру. Я собрал все необходимые образы для Calico и kube-proxy и загрузил их в реестр AWS.
- Развернул без проблем.
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, важно следовать официальной документации для корректной установки:
-
Установите Calico Operator:
Убедитесь, что вы установили Calico Operator, который будет управлять развертыванием ресурсов Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico-operator.yaml
-
Настройка сети:
Вам нужно будет изменить конфигурацию Calico в зависимости от ваших нужд. Убедитесь, что у вас правильно настроены параметры для использования VXLAN.
3. Настройка Windows узла
Теперь давайте рассмотрим конфигурации, связанные с вашим Windows узлом.
- Подготовка Windows узла:
Убедитесь, что Windows узел отвечает требованиям, указанным в документации Calico. Например, установка необходимого ПО, настройка параметров Docker и сети.
-
Установка 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 за дополнительной помощью. Удачи в настройке!