dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

【Kubernetes】 ネットワーク不通・応答無しになったNodeは、K8sがTaintsを付けてくれる

Kubernetesを使っていると、Nodeが応答不能になった時にTaintsを付けてくれる。

例えば、Amazon EKS を使っていて、Nodeが応答できなくなった時(例えば、 Kubelet が止まってしまった時)には、下記のTaintsを付けてくれる。

  • node.kubernetes.io/unreachable:NoExecute
  • node.kubernetes.io/unreachable:NoSchedule

これはKubernets コントロールプレーンにあるKubernetes Nodeコントローラーが付けてくれるので、「Nodeが応答できなくなって、Nodeが自分自身にTaintsを付けられない」という心配はない(と思う、誤っていたらコメントで教えてほしい)。

これで何が嬉しいかというと、Taintsの付いているNodeへは、スケジューリングを行わず、他のNodeを優先的に使えるということができる点である。

また、他にも、メモリが少ないことを意味する node.kubernetes.io/memory-pressure や ディスク容量低下を示す node.kubernetes.io/disk-pressure 等がある。これらのTaintsを参考にすると、ヤバそうなNodeからさっさと退避させ、安全なNodeへ再配備させるということが可能になる。

Kubernetes に命令を出す kubectl には、 drain というコマンドが用意されており、これを使用することで「指定したNodeからPodを退避させる」「指定したNodeに『こいつはヤバイから再配備するな』というTaintsを貼れる1」を一度に行える。

参考

kubernetes.io