1
0

More than 1 year has passed since last update.

EKSのバージョンの「サポート終了」についてちゃんと調べてみた

Last updated at Posted at 2021-11-25

背景

業務でEKSを扱っていて、ふと生じた疑問について調べてみました。
今回参考にしたドキュメント

EKSの「サポート終了」とは?

K8sは成長途中の技術であるためバージョンのアップデートが早く、約3ヶ月に1度のペースで新しいマイナーバージョンがリリースされています。
それに伴いAWS上のEKSクラスターもデプロイしたらしっぱなしではなく、運用しながら手動アップグレードし続ける必要があります。ドキュメントでは、

各マイナーバージョンは、最初にリリースされてから約 12 か月間サポートされます

と書かれており、これ以降で下記の終了日を超えるとそのバージョンは「サポート終了」となります。
image.png
ここで、以下の疑問がわきました。
EKSの「サポート終了」ってどういう意味なんだろう?🤔

OSやソフトではの「サポート終了」 = 「それ以降も使い続けることはできるけど、セキュリティアップデートや不具合時の問い合わせが提供されなくなり、自己責任での運用になる」
とざっくり理解しています。

EKSでも、同じようにAWSサポートへの問い合わせができなくなるって意味なのか?
まさかサポート終了日過ぎたらPodが一気に停止してサービス停止に陥ったりしないよな…

そこでこの疑問を晴らすべく、ちゃんと調べてみることにしました。
ただ大前提として、EKSクラスターはきちんと手動バージョンアップしてサポート終了日までほったらかしってことは無いようにしましょう。笑
セキュリティのためにもですし、便利なツールがどんどん導入されています。

サポート終了日が過ぎた時の挙動

EKSクラスターをデプロイした時のバージョンがサポート終了日を過ぎた場合の挙動は、コントロールプレーンとデータプレーンで違います。

1. コントロールプレーン

こっちはドキュメントに明確に書かれています。

サポート終了日には、終了の対象となっているバージョンで新しい Amazon EKS クラスターを作成できなくなります。既存のコントロールプレーンは、Amazon EKS の段階的なデプロイプロセスを通じて、サポートされている最も古いバージョンに自動的に更新されます。

つまり、バージョン1.20でEKSクラスターを運用中の場合、1.20のサポート終了したらコントロールプレーンは自動的に(サポートされている最も古い)1.21にアップグレードされます。この自動バージョンアップのタイミングははっきり決まっておらず、AWS側で任意のタイミングで行われるようです。

2. データプレーン

コントロールプレーンと違い、データプレーンは自動でアップグレードされないようです。
ただ、データプレーンの構築方法として、EC2/Fargateの2種類があります。ドキュメントにも分けて書かれていたので、ここでも以下で分けて説明します。

データプレーンの挙動を詳しく

1. データプレーンがEC2のとき

EC2を使用した時は、マネージドノード型グループでも、セルフマネージド型ノードグループでもEC2は自動バージョンアップされないようです。
ドキュメント中の以下2項目で詳しく書かれています。

Q: Amazon EKS のマネージド型ノードグループは、クラスターのコントロールプレーンのバージョンとともに自動的に更新されますか?
Q: セルフマネージド型ノードグループは、クラスタコントーロールプレーンのバージョンとともに自動的に更新されますか?

「だったらコントロールプレーンとバージョン差異が出たら互換性なくなって障害が起きるのか?」と一瞬不安になりましたが、マイナーバージョン2世代まではコントロールプレーンとデータプレーン間の互換性がサポートされているらしいです。なので、ある程度バッファはあります。(ずっと差異がある状態は推奨されていませんが)

最大 2 つ前のマイナーバージョンに対して、コントロールプレーンとノード間の互換性が確認されています。

実際にAWSサポートに問い合わせたところ、プレーン間で2世代以上の差異が出た場合はKubernetes自体の各コンポーネントが正常に動作しなくなり、EKS上で運用しているアプリケーションは意図せず中断する可能性はある。という旨の回答をもらいました。

結論として、
「EC2データプレーンはずっと手動バージョンアップせず放置すると、サービス中断のリスクがある。そのためデプロイ後もK8sのリリースに追随してアップデートを続ける必要がある。」
ということになります。

2. データプレーンがFargateのとき

じゃあEKS on Fargateを使用した場合はどうなるのか?これもドキュメントに書かれています。

Q: クラスターコントロールプレーンのバージョンに対する自動アップグレードによって、Fargate で実行中のポッドも自動的にアップグレードされますか?

ただ、これに対するAnswerが分かりづらく、自分の読解力では理解できませんでした…。
「自動でPod削除されて再スケジュールされる的に読めるから、自動バージョンアップされるのか?よくわからん…」

そこで、これもAWSサポートに問い合わせたところ、結局EC2のときと同様に自動バージョンアップはされず、手動バージョンアップが必要、という回答もらいました。
具体的な手順としては、Fargateノードで実行されているPodを再デプロイして、手動でワーカーノードのバージョンを更新します。

 まとめ

○EKSクラスタを手動バージョンアップせず放置した場合
・コントロールプレーンはAWS側で自動でバージョンアップされる。
・データプレーンはEC2/Fargateいずれを使った場合でも、自動バージョンアップされない。
なので、データプレーンは手動バージョンアップが必ず必要

○データプレーンをバージョンアップしなかった場合、最悪サービス中断に陥る恐れがある。(コントロールプレーンと2世代以上差異が出た場合)

○EKSクラスターはデプロイ後も放置せず、ちゃんと手動バージョンアップしてメンテナンスするようにしましょう。

今回参考にしたドキュメント

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0