標準サポートバージョンのリリースノート - Amazon EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

標準サポートバージョンのリリースノート

このトピックでは、標準サポートの各 Kubernetes バージョンで注意すべき重要な変更点を説明します。アップグレードするときは、クラスターの古いバージョンと新しいバージョン間で発生した変更を注意深く確認してください。

注記

1.24 以降のクラスターでは、公式に公開された Amazon EKS AMI には、唯一のランタイムとして containerd が含まれています。1.24 よりも前の Kubernetes バージョンは、デフォルトのランタイムとして Docker を使用します。これらのバージョンには、containerd を使用してサポートされているクラスターでワークロードをテストできるブートストラップフラグオプションがあります。詳細については、「Amazon EKS は Dockershim のサポートを終了しました」を参照してください。

Kubernetes 1.30

Kubernetes 1.30 が Amazon EKS で利用可能になりました。Kubernetes 1.30 の詳細については、「公式リリースのお知らせ」を参照してください。

重要
  • Amazon EKS バージョン 1.30 以降では、新しく作成されたマネージド型ノードグループは、ノードオペレーティングシステムとして自動的に Amazon Linux 2023 (AL2023) を使用するようデフォルトで設定されます。以前は、新しいノードグループはデフォルトで Amazon Linux 2 (AL2) を使用するよう設定されていました。新しいノードグループを作成するときに AL2 を AMI タイプとして選択すれば、AL2 を引き続き使用できます。

  • Amazon EKS 1.30 では、topology.k8s.aws/zone-id ラベルがワーカーノードに追加されます。アベイラビリティーゾーン ID (AZ ID) を使用すると、アカウント間でリソースの場所を区別できます。詳細については、「AWS RAM ユーザーガイド」の「Availability Zone IDs for your AWS resources」を参照してください。

  • 1.30 以降、Amazon EKS は新しく作成されたクラスターに適用された gp2 StorageClass リソースに default 注釈を含めなくなりました。このストレージクラスを名前で参照する場合、これは影響しません。クラスターにデフォルトの StorageClass を設定する場合は、アクションを実行する必要があります。gp2 という名前で StorageClass を参照する必要があります。v1.31.0 または、aws-ebs-csi-driver add-on のインストール時に defaultStorageClass.enabled パラメータを true に設定することで、Amazon EBS が推奨するデフォルトのストレージクラスをデプロイすることもできます。

  • Amazon EKS クラスター IAM ロールに必要な最小 IAM ポリシーが変更されました。アクション ec2:DescribeAvailabilityZones は必須です。詳細については、「Amazon EKS クラスター の IAM ロール」を参照してください。

Kubernetes 1.30 変更履歴の全文については、「https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md」を参照してください。

Kubernetes 1.29

Kubernetes 1.29 が Amazon EKS で利用可能になりました。Kubernetes 1.29 の詳細については、「公式リリースのお知らせ」を参照してください。

重要
  • 非推奨の FlowSchemaflowcontrol.apiserver.k8s.io/v1beta2 API バージョンと PriorityLevelConfiguration は、Kubernetes v1.29 で現在は提供されていません。非推奨のベータ API グループを使用するマニフェストまたはクライアントソフトウェアがある場合は、v1.29 にアップグレードする前にこれらを変更する必要があります。

  • ノードオブジェクトの .status.kubeProxyVersion フィールドは非推奨となり、Kubernetes プロジェクトでは今後のリリースでそのフィールドを削除することが提案されています。非推奨のフィールドは正確ではなく、従来は kubelet によって管理されていましたが、実際には kube-proxy バージョンを認識できず、kube-proxy が実行されているかどうかも判別できませんでした。クライアントソフトウェアでこのフィールドを使用している場合は、停止してください。かかるフィールドの情報に信頼性はなく、現在は非推奨です。

  • Kubernetes 1.29 で潜在的なアタックサーフェスを減らすため、LegacyServiceAccountTokenCleanUp 機能は、レガシーの自動生成されたシークレットベースのトークンを長期間 (デフォルトでは 1 年) 使用されていない場合は無効としてラベル付けし、無効としてマークされた後に長期間使用が試みられなかった場合は自動的に削除します (デフォルトではその後 1 年)。このようなトークンを識別するには、以下を実行してください。

    kubectl get cm kube-apiserver-legacy-service-account-token-tracking -nkube-system

Kubernetes 1.29 変更履歴の全文については、「https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#changelog-since-v1280」を参照してください。

Kubernetes 1.28

Kubernetes 1.28 が Amazon EKS で利用可能になりました。Kubernetes 1.28 の詳細については、「公式リリースのお知らせ」を参照してください。

  • Kubernetes v1.28 により、n-2 から n-3 へ、1 つのマイナーバージョンごとのコアノードとコントロールプレーンコンポーネントの間でサポートされるスキューが拡張されました。これにより、サポートされている最も古いマイナーバージョンのノードコンポーネント (kubelet および kube-proxy) が、サポートされている最新のマイナーバージョンのコントロールプレーンコンポーネント (kube-apiserverkube-schedulerkube-controller-managercloud-controller-manager) と連携できるようになりました。

  • Pod GC Controller にあるメトリクス force_delete_pods_total および force_delete_pod_errors_total は、ポッドの強制削除をすべて考慮するよう拡張されました。ポッドが強制的に削除される理由が、ポッドが終了しているのか、孤立しているのか、サービス外テイントで終了しているのか、あるいは終了してスケジュールされていないのかを示す理由がメトリックに追加されます。

  • PersistentVolume (PV) コントローラーは、storageClassName が設定されておらずバインドされていない PersistentVolumeClaim にデフォルトの StorageClass を自動的に割り当てるように変更されました。さらに、API サーバー内の PersistentVolumeClaim アドミッション検証メカニズムが調整され、値が未設定の状態から実際の StorageClass 名に変更できるようになりました。

Kubernetes 1.28 変更履歴の全文については、「https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#changelog-since-v1270」を参照してください。

Kubernetes 1.27

Kubernetes 1.27 が Amazon EKS で利用可能になりました。Kubernetes 1.27 の詳細については、「公式リリースのお知らせ」を参照してください。

重要
  • アルファ seccomp アノテーション seccomp.security.alpha.kubernetes.io/pod と container.seccomp.security.alpha.kubernetes.io アノテーションのサポートは削除されました。アルファ seccomp アノテーションは 1.19 で非推奨となり、1.27 で削除されたことで、seccomp アノテーションを持つ Pods に seccomp フィールドが自動的に入力されなくなります。代わりに、Pods またはコンテナの securityContext.seccompProfile フィールドを使用して seccomp プロファイルを構成してください。クラスターで非推奨のアルファ seccomp アノテーションを使用しているかどうかを確認するには、次のコマンドを実行します。

    kubectl get pods --all-namespaces -o json | grep -E 'seccomp.security.alpha.kubernetes.io/pod|container.seccomp.security.alpha.kubernetes.io'
  • kubelet の --container-runtime コマンドライン引数が削除されました。1.24 以降、Amazon EKS のデフォルトのコンテナランタイムが containerd となっており、これによりコンテナランタイムを指定する必要がなくなりました。1.27 以降、Amazon EKS は、ブートストラップスクリプトに渡された --container-runtime 引数を無視します。ノードのブートストラッププロセス中のエラーを防ぐために、この引数を --kubelet-extra-args に渡さないことが重要です。すべてのノード作成ワークフローとビルドスクリプトから --container-runtime 引数を削除する必要があります。

  • Kubernetes 1.27 の kubelet は、デフォルトの kubeAPIQPS を 50 に、kubeAPIBurst を 100 に増やしました。これらの機能強化により、kubelet がより大量の API クエリを処理できるようになり、応答時間とパフォーマンスが向上します。  スケーリング要件により、Pods に対する需要が増加した場合、修正されたデフォルト値により、kubelet は増加したワークロードを効率的に管理できるようになります。その結果、Pod の起動が速くなり、クラスター操作がより効率的になります。

  • よりきめ細かい Pod トポロジを使用して、minDomain などのポリシーを分散できます。このパラメータにより、Pods を分散させる必要のあるドメインの最小数を指定できます。nodeAffinityPolicy および nodeTaintPolicy を使用することで、Pod の分散を管理する際の粒度をさらに細かくすることができます。これは、ノードのアフィニティ、テイント、Pod's 仕様の topologySpreadConstraints の matchLabelKeys フィールドによって異なります。これにより、ローリングアップグレード後の分散計算のために Pods を選択できます。

  • Kubernetes1.27 は PersistentVolumeClaims (PVCs) の存続期間を制御する StatefulSets の新しいポリシーメカニズムをベータ版に昇格しました。新しい PVC リテンションポリシーでは、StatefulSet が削除されたとき、または StatefulSet 内のレプリカがスケールダウンされたときに、StatefulSet スペックテンプレートから生成された PVCs を自動的に削除するか、保持するかを指定できます。

  • Kubernetes API サーバーの goaway-chance オプションを使用すると、接続がランダムに閉じることで、HTTP/2 クライアント接続が単一の API サーバーインスタンスでスタックされることを防ぐことができます。接続が閉じると、クライアントは再接続を試み、負荷分散の結果として別の API サーバーにアクセスする可能性があります。Amazon EKS バージョン 1.27 では、goaway-chance フラグが有効になっています。Amazon EKS クラスターで実行されているワークロードで HTTP GOAWAY と互換性のないクライアントが使用されている場合は、接続終了時に再接続することで GOAWAY を処理できるようにクライアントを更新することをお勧めします。

Kubernetes 1.27 変更履歴の全文については、「https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1260」を参照してください。

Kubernetes 1.26

Kubernetes 1.26 が Amazon EKS で利用可能になりました。Kubernetes 1.26 の詳細については、「公式リリースのお知らせ」を参照してください。

重要

Kubernetes 1.26 では、CRI v1alpha2 のサポートは終了しています。この結果、コンテナランタイムが CRI v1 をサポートしていない場合、kubelet はノードを登録しなくなります。これは、Kubernetes 1.26 は containerd のマイナーバージョン 1.5 以前のバージョンをサポートされていないことも意味します。containerd を使用している場合は、ノードを Kubernetes 1.26 にアップグレードする前に containerd バージョン 1.6.0 以降にアップグレードする必要があります。また、v1alpha2 のみをサポートする他のコンテナランタイムもアップグレードする必要があります。詳細については、コンテナランタイムベンダーにお問い合わせください。デフォルトでは、Amazon Linux および Bottlerocket AMI には containerd バージョン 1.6.6 が含まれます。

  • Kubernetes 1.26 にアップグレードする前に、Amazon VPC CNI plugin for Kubernetes をバージョン 1.12 以降にアップグレードしてください。Amazon VPC CNI plugin for Kubernetes バージョン 1.12 またはそれ以降にアップグレードしていない場合、Amazon VPC CNI plugin for Kubernetes はクラッシュします。詳細については、「Amazon VPC CNI plugin for Kubernetes Amazon EKS アドオンの使用」を参照してください。

  • Kubernetes API サーバーの goaway-chance オプションを使用すると、接続がランダムに閉じることで、HTTP/2 クライアント接続が単一の API サーバーインスタンスでスタックされることを防ぐことができます。接続が閉じると、クライアントは再接続を試み、負荷分散の結果として別の API サーバーにアクセスする可能性があります。Amazon EKS バージョン 1.26 では、goaway-chance フラグが有効になっています。Amazon EKS クラスターで実行されているワークロードで HTTP GOAWAY と互換性のないクライアントが使用されている場合は、接続終了時に再接続することで GOAWAY を処理できるようにクライアントを更新することをお勧めします。

Kubernetes 1.26 変更履歴の全文については、「https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#changelog-since-v1250」を参照してください。