NodeRestriction

NodeRestrictionはKuberntesによって提供されるAdmissionPluginでkube-api-serverで--enable-admission-plugins=NodeRestionを指定することで有効化できる。

kubernetes.io

効果1

nodeが他のnodeのラベルを変更することを禁じる。

効果2

nodeにおけるnode-restriction.kubernetes.io/プレフィックスがついたラベルの変更を禁じる。(自分自身のnodeであっても禁止)

検証

効果1を検証
root@kind-worker:/# kubectl  --kubeconfig=/etc/kubernetes/kubelet.conf label nodes kind-worker  hoge=fuga
node/kind-worker labeled
root@kind-worker:/# kubectl  --kubeconfig=/etc/kubernetes/kubelet.conf label nodes kind-worker2  hoge=fuga
Error from server (Forbidden): nodes "kind-worker2" is forbidden: node "kind-worker" is not allowed to modify node "kind-worker2"

kind-workerは自身のnodeのラベルの変更はできるが、kind-worker2のラベルを変更できない。

効果2を検証
root@kind-worker:/# kubectl  --kubeconfig=/etc/kubernetes/kubelet.conf label nodes kind-worker node-restriction.kubernetes.io/hoge=fuga
Error from server (Forbidden): nodes "kind-worker" is forbidden: is not allowed to modify labels: node-restriction.kubernetes.io/hoge

kind-workerは自身のnodeのラベルの変更であっても、node-restriction.kubernetes.io/プレフィックスがついたラベルの変更はできない。