Skip to content

Latest commit

 

History

History
36 lines (28 loc) · 1.85 KB

README.md

File metadata and controls

36 lines (28 loc) · 1.85 KB

Node Labels Copier

Небольшой контроллер, который копирует значение лейбла role в лейбл node-role.kubernetes.io/<ROLE> на нодах.

Начиная с 1.16 версии kubernetes, kubelet (опция --node-labels) запрещает создавать лейблы с доменами k8s.io и kubernetes.io в именах. То есть при инициализации ноды это теперь нельзя сделать. В качестве решения можно вместо этого создавать лейбл role и данный контроллер скопирует это в node-role.kubernetes.io/<ROLE> тем самым решив проблему.

Плюс в том что это способ уневерсальный, как для managed кластеров так и для self-hosted. Достаточно добавить лейбл role на ноды и задеплоить контроллер:

kubectl apply -f deploy/deploy.yaml

В yandex managed kubernetes просто добавьте лейбл role при создании группы нод:

resource "yandex_kubernetes_node_group" "workers" {
  cluster_id  = "${yandex_kubernetes_cluster.my_cluster.id}"
  name        = "name"
  description = "description"
  version     = "1.19"

  labels = {
    "role" = "worker"
  }

В self-hosted нодах добавьте --node-labels:

cat > /etc/systemd/system/kubelet.service.d/25-extra-labels.conf <<EOF
[Service]
Environment="KUBELET_EXTRA_ARGS=--node-labels role=worker"
EOF
systemctl daemon-reload
systemctl restart kubelet

Либо используйте конфиг kind: JoinConfiguration: nodeRegistration.kubeletExtraArgs.role: worker. Если используете kubeadm для инициализации ноды.