EKSクラスターアップグレード
随時追記
↑コントロールプレーン(とアドオン)について
↓ワーカーはワーカーで、別途更新が必要
やること雑まとめ
マスターノード更新 つまりAPI Server/Controller Manager/Scheduler/etcdの更新
APIの互換性がなくなる場合以外は、既に起動したアプリケーションへの影響はない(たぶん)
それ自身がAPIサーバーにリクエストしたりしない普通のアプリケーションであれば
できるだけ、コンソールポチるで済ませたい
ワーカーノード更新
CloudFormationスタックの更新でやると、
一時的に居場所を失うPodが出る可能性がある
Graceful shuwdownできない
新しいグループを追加→Pod引っ越し→古いノードを消す方が安心してやれそう
Amazon VPC CNI プラグイン更新
KubeProxy更新
CoreDNS更新
次のバージョンで非推奨や使用不可になるapiVersionへの対応
非推奨なら上げてからも対応できる
削除されて使用不可になる場合は上げる前に必ず対応する
いろいろな失敗
セルフマネージドノードとマネージドノードグループの共存環境では互いの通信許可が必要
セルフマネージドノードがメインのクラスターに、マネージドノードグループを追加しようとした際、
セルフマネージドノードからは、VPCピアリング接続の先にあるRDSへの接続ができるが、
マネージドノードグループからは接続できないという状態になった。
RDSのセキュリティグループでは、マネージドノードグループからのインバウンドを許可していた。
↓
後に、そもそも名前解決が(RDSに限らず)まったくできていないという状態であることが分かった。
これは、CoreDNSのPodがセルフマネージドノード上に存在し、セルフマネージドノードのセキュリティグループと、マネージドノードグループのセキュリティグループそれぞれで、互いからの通信を許可する設定が漏れていた。
サポート終了ギリギリに更新しようとしたら、マネジメントコンソールから選択肢が取り払われていた
1.12から1.13への更新をサポート終了当日に行おうとしたところ、コンソールで更新ボタンを押して選択できる最低バージョンが1.14になっていた。そのまま更新しようとしても、マイナーバージョン1つずつしか更新できない制約がある
https://gyazo.com/f9f6cbba38124b1551479b31167eefed
ため、エラーになる(不明なエラーと表示された)。
AWS CLIを使って、1.13へ更新ができた。
code:shell
aws --profile prod eks update-cluster-version --name hoge --kubernetes-version 1.13
Self-managed nodesの更新
これに沿って行うと、CloudFormation テンプレートの更新をすることになったが、
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-nodegroup.yaml
パブリックIPアドレスがEC2インスタンスに割り当てられず、インスタンスは起動しているのにノードとしては存在しない状態になった。
原因はテンプレートの更新によってIPアドレス割り当ての設定記述が変更されたこと。
To help make this switch easier, we’re updating the EKS VPC and node CloudFormation templates. Previously, Amazon EKS vended AWS CloudFormation templates that assigned public IP addresses to worker nodes via the EC2 configuration instead of at the subnet.
Starting today, we are launching updated AWS CloudFormation templates that set the public IP assignment at the subnet for public subnets and are removing the public IP assignment from node group templates.
いずれかのサブネットがパブリックサブネットである場合は、パブリック IP アドレスの自動割り当て設定を有効にする必要があります。この設定がパブリックサブネットに対して有効になっていない場合、そのパブリックサブネットにデプロイするワーカーノードにはパブリック IP アドレスが割り当てられず、クラスターやその他の AWS のサービスと通信できなくなります。Amazon EKS AWS CloudFormationVPC テンプレートのいずれかを使用して 03/26/2020 以前に、または eksctl を使用してサブネットがデプロイされた場合、パブリックサブネットではパブリック IP アドレスの自動割り当てが無効になります。
なので、VPCのスタックでもテンプレート更新を行い、解決した。
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-vpc-sample.yaml
参考リンク