NodeRestrictionはKuberntesによって提供されるAdmissionPluginでkube-api-serverで--enable-admission-plugins=NodeRestion
を指定することで有効化できる。
効果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/
のプレフィックスがついたラベルの変更はできない。