Amazon Web Services ブログ

Amazon EKS が Kubernetes 1.24 のサポートを開始

この記事は Amazon EKS now supports Kubernetes version 1.24 (記事公開日: 2022 年 11 月 15 日) を翻訳したものです。

Amazon Elastic Kubernetes Service (Amazon EKS) チームは、Amazon EKS および Amazon EKS Distro の Kubernetes バージョン 1.24 のサポートを発表できることを嬉しく思います。私たちは、お客様に「Stargazer」リリースのパワーを体験していただくことを楽しみにしています。Kubernetes の各リリースには、リリースチームによって名前が付けられています。チームはこのリリースに「Stargazer」を選び、世界中の何百人ものコントリビューターが行った作業を次のように称えました。「ひとりひとりのコントリビューターは私たちの空の星であり、Amazon EKS は、このリリースをより大きなクラウドネイティブエコシステムにもたらしたアップストリームのコミュニティと Kubernetes 1.24 リリースチームに心からの感謝を捧げます。」

夜空を指す望遠鏡のロゴ

Kubernetes 1.24 のハイライト

この記事では、Kubernetes 1.24 バージョンの注目すべき変更点を紹介します。完全なリリースノートについては、この Kubernetes ブログ記事を参照してください。変更点と非推奨事項の完全なリストについては、Kubernetes 1.24 の変更ログを参照してください。

Dockershim の削除

このリリースでの最も大きな変更点は、Dockershim としても知られる Docker 用の Container Runtime Interface (CRI) が削除されたことです。Kubernetes のバージョン 1.24 以降、Amazon EKS が提供する Amazon マシンイメージ (AMI) は、containerd ランタイムのみをサポートします。バージョン 1.24 の EKS 最適化 AMI は、enable-docker-bridgedocker-config-json、および container-runtime フラグをサポートしなくなりました。

重要: ワーカーノードを Kubernetes 1.24 にアップグレードする前に、これらのフラグへの参照をすべて削除する必要があります。

Docker ビルドツールで生成された Open Container Initiative (OCI) イメージは、以前と同様に Amazon EKS クラスターで引き続き実行できます。Kubernetes のエンドユーザーとして、大きな変化を感じることはないでしょう。引き続き Docker を使用してクラスターの外でコンテナをビルドすることができます。Amazon EKS が Dockershim のサポートを終了する理由については、このリンクを確認してください。詳細については、Kubernetes ブログの Kubernetes is Moving on From Dockershim: Commitments and Next Steps を参照してください。

Detector for Docker Socket (DDS)

AWS は、お客様の環境において Dockershim の使用状況を特定することがいかに難しいかを認識しています。Amazon のお客様とより大きな Kubernetes コミュニティを支援するために、AWS は Detector for Docker Socket (DDS) というツールを開発しました。EKS クラスターを更新する前に、このツールを使用して、アプリケーションが Docker ソケットをマウントしているかどうかを確認し、変更することができます。

この検出ツールは、ワークロードまたはマニフェストファイルのいずれかが docker.sock ボリュームをマウントしているかどうかを検出することができる kubectl プラグインです。Pod がワークロード (Deployment、StatefulSet など) の一部である場合、Pod を直接検査するのではなく、ワークロードタイプを検査します。また、このツールはディスク上の Kubernetes マニフェストファイルを検査することもできます。詳細はプロジェクトの README を参照してください。

ベータ版 API はデフォルトでオフ

このリリース以前は、ベータ版 API はデフォルトで有効になっていました。これにより新機能の採用が加速された一方で、Kubernetes ユーザーにとってはバグにさらされたり、移行に苦労したりと、運用上の課題も発生しました。新しいベータ版 API は、Kubernetes バージョン 1.24 以降のクラスターではデフォルトで有効化されない予定です。既存のベータ版 API および既存のベータ版 API の新バージョンは、引き続きデフォルトで有効化されます。Amazon EKS は、アップストリームの Kubernetes 1.24 と同じ動作に従います。この変更の背景にある論拠の詳細については、こちらのリンクを参照してください。

Topology Aware Hints

耐障害性と障害分離のために、Kubernetes のワークロードを異なるアベイラビリティゾーン (AZ) で動作するノードにデプロイすることは一般的なプラクティスです。このアーキテクチャには大きな利点がありますが、多くのシナリオでは、AZ をまたぐデータ転送の料金が発生します。EKS におけるデータ転送料金の一般的なシナリオについては、こちらの記事を参照してください。Amazon EKS のお客様は、デフォルトで有効になっている Topology Aware Hints を使用して、Kubernetes Service のトラフィックを同じアベイラビリティゾーン内に保つことができるようになりました。Topology Aware Hints は、kube-proxy などのコンポーネントにヒントを与える柔軟なメカニズムを提供し、それらを使用してクラスター内でトラフィックがどのようにルーティングされるかに影響を与えます。

Pod Security Policy

Pod Security Policy (PSP) は、Kubernetes バージョン 1.21 で非推奨となり、バージョン 1.25 で削除される予定です。PSP は、Pod Security Standards (PSS) に概説されているセキュリティ制御を実装するビルトインのアドミッションコントローラーである Pod Security Admission (PSA) に置き換えられる予定です。PSA と PSS は、Kubernetes バージョン 1.23 の時点で両方ともベータ機能のステータスに達しており、Amazon Elastic Kubernetes Service (EKS) ではデフォルトで有効になっています。PSP と PSS の実装に関するガイダンスについては、こちらのブログ記事を参照してください。

また、PSA の代替として、Kubernetes エコシステムの KyvernoOPA/Gatekeeper のような Policy as Code (PaC) ソリューションを活用することも可能です。PaC ソリューションの詳細や PSA と PaC の使い分けについては、Amazon EKS ベストプラクティスガイドを参照してください。

EKS マネージド型ノードグループ (MNG) のスケーリングの簡素化

Kubernetes 1.24 では、アップストリームの Cluster Autoscaler プロジェクトに、Amazon EKS マネージド型ノードグループ (MNG) のゼロからおよびゼロへのスケーリングを簡素化する機能を提供しました。以前は、Cluster Autoscaler がゼロにスケールされた MNG のリソース、ラベル、および Taint を認識するために、 基盤となる EC2 Autoscaling Group (ASG) にタグ付けする必要がありました。

Kubernetes 1.24 以降、MNG に実行中のノードがない場合、Cluster Autoscaler は EKS DescribeNodegroup API を呼び出して、MNG のリソース、ラベル、Taint について必要な情報を取得します。EKS MNG が作成する ASG 上の Cluster Autoscaler タグの値が MNG 自体の値と競合する場合、Cluster Autoscaler は ASG のタグを優先し、お客様が必要に応じて値をオーバーライドできるようにします。

Certificates Controller の変更

Kubernetes 1.23 以前では、検証できない IP および DNS の SAN (Subject Alternative Name) を持つ Kubelet サービング証明書は、検証できない SAN を使用して自動的に発行されていました。バージョン 1.24 以降、SAN が検証できない場合、Kubelet サービング証明書は発行されません。これにより、kubectl exec コマンドおよび kubectl logs コマンドが動作しなくなります。EKS ユーザーガイドに記載されている手順に従い、この問題の影響を受けるかどうか、推奨される回避策、および長期的な解決策を確認してください。

Kubelet Credential Provider がベータ版に移行

Amazon EKS Anywhere を使用している場合、Kubernetes 1.24 には Image Credential Provider の Kubelet サポートが含まれています。ディスク上に静的な認証情報を保存するのではなく、コンテナレジストリの認証情報を動的に要求するために、kubelet に --image-credential-provider-config--image-credential-provider-bin-dir フラグを設定することができます。Amazon ECR プラグインを使用するための Kubelet Credential Provider 設定ファイルのサンプルは、このリンクを参照してください。さらに、この記事に記載されている実装例を参考に、マネージドアイデンティティプロバイダーとして Cognito ユーザープールを、クレデンシャルプロバイダーとして Cognito バイナリを使用することができます。

まとめ

AWS は、お客様が Kubernetes 1.24 のたくさんの機能強化や新しい安定した API を活用し始めることを楽しみにしています。Kubernetes 1.24 にアップデートする前に、ワークロードを変更して Dockershim への依存性を削除し、containerd を使用してテストする必要があります。また、Kubernetes バージョン 1.25 では、Pod Security Policy が削除されることに注意してください。Pod Security Policy を Pod Security Admission (PSA) または Policy as Code (PaC) ソリューションに移行することを計画してください。

Amazon EKS は、常に少なくとも 4 つの Kubernetes バージョンをサポートしています。Kubernetes のリリースサイクルの性質を考えると、すべてのお客様にとって、継続的なアップグレード計画を持つことが非常に重要です。Amazon EKS のバージョン 1.20 のサポートは、2022 年 11 月 1 日に終了し、新しい 1.20 クラスターを作成することはできなくなりました。詳細については、Amazon EKS Kubernetes リリースカレンダーを参照してください。最新の Kubernetes バージョンに EKS クラスターをアップデートする方法については、EKS ユーザーガイドを参照してください。

翻訳はプロフェッショナルサービスの杉田が担当しました。原文はこちらです。