Amazon Web Services ブログ
Amazon EKS が Kubernetes 1.23 のサポートを開始
この記事は Amazon EKS now supports Kubernetes 1.23 (記事公開日: 2022 年 8 月 11 日) を翻訳したものです。
はじめに
Amazon Elastic Kubernetes Service (Amazon EKS) チームは、Kubernetes 1.23 のサポートを発表できることを嬉しく思います。Amazon EKS と Amazon EKS Distro は Kubernetes バージョン1.23 を実行できるようになりました。Amazon EKS Anywhere でのサポートも間もなく開始されます。
このリリースのアップストリームプロジェクトのテーマは、 “The Next Frontier” です。Kubernetes 1.23 リリースリードの Rey Lejano に話を聞くと、このネーミングの背景にはいくつかの理由があるようです。Rey は Star Trek の大ファンです (それはわかりますね) 。Star Trek V: Final Frontier は、ヨセミテ国立公園で始まり、終わります。「私が育った場所」だと Rey は言いました。さらにこう言いました。「リリース自体が、Kubernetes の “次” をカプセル化する新しい段階的な機能拡張をもたらします。各リリースチームが新しいコントリビューターをもたらし、それらの人々にとって、リリースチームとリリースは、彼らのオープンソースのフロンティアにおける最初のコントリビューションとなります。」
ソリューションの概要
このリリースには、Pod Security アドミッションコントローラーのベータへの移行、Amazon Elastic Block Store (Amazon EBS) ボリュームを操作するための Container Storage Interface (CSI) Migration のアップデート、および特定のベータ API と以下に詳述する機能の廃止と削除を含むいくつかの重要な変更が含まれています。特に、CSI ドライバーのアップデートでは、一部のお客様はスムーズなアップグレードプロセスを確保するために対応が必要な場合があります。Kubernetes 1.23 では、Pod Security Standards (PSS) とPod Security Admission (PSA) 、および Horizontal Pod Autoscaler (HPA) v2 の GA も導入されています。アップストリームの Kubernetes 1.23 リリースが、このリリースをより大きなクラウドネイティブエコシステムにもたらすために行ったすべての作業に感謝します。
Amazon EBS ボリュームを使用するワークロードに関する重要な変更点
Kubernetes 1.23 の CSI には、Amazon EBS ボリュームを使用している場合、アップグレードプロセスに影響を与える可能性のある注目すべき変更がいくつかあります。CSI は in-tree のドライバー機構を置き換えるために開発されました。in-tree ドライバーは Kubernetes プロジェクトのソースコード内に存在し、AWS の Amazon EBS など特定のストレージプロバイダーと連携するための特殊なコードです。CSI サポートが追加されたことで、AWS のようなストレージプロバイダーが Kubernetes のリリースサイクルに依存せずに機能をリリースし、サポートを維持することが容易になるシンプルなプラグインモデルが用意されました。
in-tree プラグインから CSI ドライバーへの移行を支援するため、Kubernetes 1.23 では CSIMigrationAWS がデフォルトで有効になりました。Amazon EBS CSI ドライバーがインストールされると、in-tree API は同等の CSI API に変換されます。Amazon EBS ボリュームを使用している場合、1.23 にアップグレードする前に Amazon EBS CSI ドライバーをインストールする必要があります。Amazon EBS CSI プラグインがインストールされていない場合、プロビジョニング、アタッチ、マウント、およびサイズ変更などのボリューム操作が失敗します。詳細については、ドキュメントを参照してください。
Amazon EKS はバージョン 1.24 で Dockershim のサポートを終了します
アップストリームの Kubernetes プロジェクトは、バージョン 1.20 で Dockershim を非推奨とし、1.24 で削除しています。Dockershim
は、Kubernetes が Docker をコンテナランタイムとして使用できるようにするためのコンポーネントです。Dockershim
は非推奨ですが、お客様は Amazon EKS 1.23 で完全に機能するランタイムとして Docker を使用し続けることができます。Amazon EKS 1.24 リリースでサポートが最終的に削除される前に、ユーザーは containerd
に移行する必要があります。EKS 1.24 以降も Dockershim
を使用する必要がある場合は、Amazon EKS が提供する最適化された AMI には含まれなくなるため、Amazon マシンイメージ (AMI) を構築する必要があります。Cloud Native Computing Foundation (CNCF) の Graduated プロジェクトであり、AWS Fargate、Bottlerocket、Windows ワーカーで使用されている containerd
を使ったクラスターのインストールと管理方法については、Amazon EKS 1.21 リリースブログ (日本語翻訳) の Kubernetes runtime changes and EKS section (Kubernetes のランタイム変更と EKS) を参照してください。
Kubernetes 1.23 のハイライト
すべての注目すべき機能に興味がある方は、Kubernetes Blog のリリース投稿とリリースノート全文をお読みください。ここでは、主要な更新のいくつかにハイライトを当てています。変更点の完全なリストは Kubernetes 1.23 の変更ログをご覧いただくか、CNCF YouTube のライブウェビナーで 40 分間の解説をご覧ください。
Pod Security Admission
Pod Security アドミッションコントローラーは、アップストリームの Kubernetes 1.23 でベータに移行し、デフォルトで有効化されました。Pod Security Admission (PSA) は、Pod Security Policy (PSP) に代わるものです。PSP はバージョン 1.21 で非推奨となり、1.25 で完全に削除される予定です。PSP をまだ使用している場合は、次への移行を計画する良い機会です。Pod Security Standards (PSS) は、Pod を保護するための多くのユースケースを広くカバーする 3 つのポリシーを定義します。制限の少ないものから最も制限的なものまで、順番に、privileged、baseline、restricted の 3 つです。Pod Security Admission は、Kubernetes に組み込まれたシンプルなソリューションを提供しますが、Kyverno、Open Policy Agent (OPA)/Gatekeeper のような Policy as Code ソリューションほど、柔軟できめ細やかなものではありません。Pod Security を実装するためのベストプラクティスの詳細については、Amazon EKS ベストプラクティスガイドの Pod Security のセクションを参照してください。
HPA v2 が安定版へ移行
HorizontalPodAutscaler autoscaling/v2
API はバージョン 1.23 で Generally Available (GA) に移行され、続いて、HPA autoscaling/v2beta2
API は非推奨になりました。Kubernetes の API 機能が GA になると、その API は現在のメジャーバージョンを通してそのまま維持され、設定構造の重大な変更がないことを約束することになります。時間は十分にありますが、autoscaling/v2
を使用するためにマニフェストファイルを更新することを検討してください。HPA v2 の注目すべき機能は、カスタムメトリクスでのスケーリング機能です。HPA コントローラーが Kubernetes API にクエリし、Kubernetes に組み込まれていないカスタムメトリクスに基づいてスケーリングできるようになりました。また、HPA コントローラーが評価およびスケーリングを実行するためのメトリクスを、複数指定することも可能です。ところで、強力なイベントドリブンオートスケーラーを使用して HPA の機能を拡張することを検討している場合は、CNCF の Incubating プロジェクトである Kubernetes Event-driven Autoscaling (KEDA) を調べてみてください。
IPv6 モードとデュアルスタック
Kubernetes 1.23 では、デュアルスタック IPv4/IPv6 ネットワーキングが GA となり、Pod と Service に IPv4 と IPv6 の両方からアドレスを割り当てることができるようになりました。しかしながら、Amazon EKS の IPv6 サポート (1.21 で導入) は、限られた IPv4 アドレス空間における IPv4 枯渇問題を解決することに焦点を当てています。これは Amazon EKS のお客様が今日直面している主要な問題です。デュアルスタックは移行のユースケースで役立つ可能性がありますが、Pod/Service は依然として IPv4 アドレスを消費しています。Amazon EKS を IPv6 モードで使用すると、Pod は IPv6 アドレスを受け取りながら、IPv4 エンドポイントへのルーティング機能を維持します。IPv6 モードの詳細と、アップストリームのデュアルスタックサポートとどのように異なるかについては、ドキュメントの IPv6 のセクションを参照してください。
エフェメラルコンテナがベータに移行
Kubernetes 1.23 でエフェメラルコンテナがベータとなり、デフォルトで有効化されました。エフェメラルコンテナを使用すると、一時的なデバッグ用コンテナをデプロイして Pod のトラブルシューティングを行うことができるようになります。シェルがないために kubectl exec
が失敗した場合 (distroless イメージなど)、またはコンテナがクラッシュした場合、Pod をデバッグするのは困難なことがありました。これで、kubectl debug
コマンドを使用して、一時的なコンテナを Pod にデプロイし、デバッグコマンドを実行できるようになりました。注目すべきは、このコマンドでは Pod 内で実行されている別のコンテナのプロセス名前空間を共有できることです。一方、単に kubectl run
を実行して Pod で別のコンテナを実行しても、そのプロセス名前空間にはアクセスできません。エフェメラルコンテナの使用の詳細については、Kubernetes のドキュメントを確認してください。
CPU Manager Policy
Kubernetes 1.23 では、CPU Manager Policy オプションがベータとなり、CPU Manager Policy の動作を微調整するための追加オプションが設定できるようになりました。デフォルトの CPU 割り当て戦略では、コンテナは個々の仮想コアに割り当てられます。これにより、コンテナが同じ物理コアを共有し、ノイジーネイバーの問題が発生する可能性があります。1.23 では、full-pcpus-only
ポリシーを設定できるようになりました。これは、CPU 要求を満たすことができる完全な物理コアがある場合にのみ Pod が起動するように保証するものです。詳しくは、Kubernetes ドキュメントの CPU Management Policy のセクションを参照してください。
Windows での特権コンテナ
Kubernetes の Linux コンテナは、特権モードで実行することができるため、ホスト OS にアクセスして管理機能を利用できます。1.23 では、この機能が Windows コンテナでも利用可能になりました。Pod 仕様で windowsOptions.hostProcess
フラグを設定することで利用できます。このモードは、ほとんどのワークロードでは推奨されませんが、特定のセキュリティや監視の目的では役に立つ場合があります。HostProcess
Pod はホスト上で直接実行され、これらの Pod 内のすべてのコンテナは HostProcess
コンテナとして実行される必要があることに注意してください。コンテナの特権モードの詳細については、Kubernetesのドキュメントを確認してください。
まとめ
EKS のアップグレード
Amazon EKS のバージョンをアップグレードする方法については、ドキュメントをご確認いただけます。Amazon EKS と Amazon EKS Distro ではバージョン 1.23 を実行できます。Amazon EKS Anywhere のサポートもまもなく開始される予定です。Amazon EBS ボリュームを使用している場合、上記の関連セクションを読み、Amazon EKS 1.23 にアップグレードする前に、Amazon EBS CSI ドライバーをインストールしてください。
Kubernetes 1.19 または 1.20 を使用している場合は、バージョン 1.19 のサポートは 2022 年 8 月 1 日に終了し、バージョン 1.20 のサポートも 2022 年 11 月 1 日に終了するため、新しいバージョンに移行してください。すべてのバージョンのサポート期間については、ドキュメントの Amazon EKS リリースカレンダーを参照してください。
翻訳はプロフェッショナルサービスの杉田が担当しました。原文はこちらです。