corednsがずっとPending
EKS作成後、なぜかcorednsがずっとpending
$ kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-5cb878ffc-ppxd6 0/1 Pending 0 171m
coredns-5cb878ffc-tb578 0/1 Pending 0 171m
今までは以下の2番の手順でアノテーションを削除することで起動できていた。
しかしある日そのアノテーションは使用されなくなり、以下のコマンドが失敗する。
$ kubectl patch deployment coredns \
> -n kube-system \
> --type json \
> -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
The request is invalid
というかこのアノテーションって何のために記載されていたのだろうか。
原因と対処
結果的には、podを再起動することで解決。
原因はFargate profileが適用される前にcorednsのpodが起動したためだと思われる。
しかしEKS作成時点でcorednsのpodはFargate profile適用前に自動で起動するので、Fargate Profile適用後にかならずpodを再起動しなくてはならないのでは。
そして、今までの手順に記載されていたアノテーションの削除は、
アノテーションの削除が必要なのではなく、podを再起動させるための手段だったのかなと推測。
PlatformVersionの更新には注意を!
こういう小さな変更は告知なしで実施される傾向があると思います。
どうやら、EKSのPlatformVersionが更新されるタイミングで細かい仕様が変更が行われているようです。
今回は、公開されているドキュメントの更新より先にEKSのPlatformVersionが更新されていました。
EKS Clusterのバージョンは当然意識すると思いますが、PlatformVersionの更新には注意が必要ですね。