Еще один способ добавления Windows узла в Kubernetes кластер

Доброго времени суток, уважаемый читатель.

Для того, чтобы Windows узел мог нормально функционировать в Kubernetes кластере, нам надо каким-либо способом обеспечить работу на нем как минимум 3-х компонентов:

  1. kubelet
  2. kubeproxy
  3. flannel (или что-то другое, что обеспечивает работу сети)

Kubelet запускается в виде Windows-службы, тут всё просто и по сути ничем не отличается от того, как это происходит на Linux узлах. А вот с kubeproxy и flannel всё куда интереснее. Ранее я писал, как сделать так, чтобы они запускались в виде Windows-служб; но на Linux узлах эти 2 компонента запускаются с помощью DaemonSets.

И вот сегодня я расскажу, как реализовать подобное в Windows.

Я предполагаю, что flannel у вас работает в режиме overlay. Поэтому применяем 2 yaml файла:

curl -L https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/kube-proxy.yml | sed 's/VERSION/v1.19.0/g' | kubectl apply -f -
kubectl apply -f https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/flannel-overlay.yml

В результате у нас появятся в DaemonSets:

  1. kube-flannel-ds-windows-amd64
  2. kube-proxy-windows

Осталось настроить узел так, чтобы все это заработало. Устанавливаем wins, kubelet, kubeadm

curl.exe -LO https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/PrepareNode.ps1
.\PrepareNode.ps1 -KubernetesVersion v1.19.0

Запускам kubeadm для подключения к кластеру. Текст команды можно получить с помощью заклинания ниже, выполненного на master-узле кластера:

kubeadm token create --print-join-command

Через некоторое время на новом Windows узеле будут запущены 2 пода: flannel и kubeproxy.

Узел готов к работе. Всё!

Комментарии

  • Виталий Лещенко#

    До момента, пока мой PR не будет принят, вместо образов от sig-windows-tools можно использовать следующие:

    • flannel образы доступны для Windows Server 1809, 1903, 1909, 2004
      • vleschenko/flannel:0.12.0
      • vleschenko/flannel:0.13.0
    • kube-proxy образы доступны для Windows Server 1809, 1903, 1909, 2004 для всех версий k8s начиная с 1.17.0
      • vleschenko/kube-proxy:VERSION

    Самое главное отличние этих моих образов от официальных сейчас, в том, что мои образы создавались на базе WindowsNanoServer, а их на базе WindowsServerCore. Это существенно сокращает объем образа и увеличивает скорость запуска.

    • Виталий Лещенко#

      PR принят. Это привело к появлению Kubeadm for Windows v0.1.5. Для flannel доступны следуюие образы:

      • sigwindowstools/flannel:v0.12.0-nanoserver
      • sigwindowstools/flannel:v0.13.0-nanoserver Для kube-proxy - следующие:
      • sigwindowstools/kube-proxy:%VERSION%-nanoserver, где %VERSION% - версия Kubernetes (например - v1.20.0)
  • Виталий Лещенко#

    Оставлю пока в качестве комментария здесь: иногда при рестарте (обновлении) kube-proxy могут слететь политики сети. Исправляется это так:

    1. делаем drain проблемному узлу
    2. останавливаем kubelet
    3. перезапускаем docker (это остановит поды flannel и kube-proxy)
    4. удаляем все текущий политики сети: Get-HNSPolicyList | Remove-HNSPolicyList
    5. перезапускаем узел
    6. после того, как flannel и kube-proxy запустятся, можно вводить узел в строй

Оставить комментарий могут только зарегистрированные пользователи.

Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.