延長サポートの Kubernetes バージョンに関するリリースノートを確認する - アマゾン EKS

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

延長サポートの Kubernetes バージョンに関するリリースノートを確認する

Amazon EKS は、アップストリームでサポートされているよりも長く Kubernetes バージョンをサポートしており、Amazon EKS でリリースされてから 14 か月間は Kubernetes マイナーバージョンの標準サポートと、さらに 12 か月間のサポート (バージョンごとに合計 26 か月) は Kubernetes マイナーバージョンの拡張サポートを提供します。

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

Kubernetes 1.29

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

重要
  • FlowSchemaPriorityLevelConfiguration の非推奨の flowcontrol.apiserver.k8s.io/v1beta2 API バージョンは、Kubernetes バージョン 1.29 では提供されなくなりました。非推奨のベータ API グループを使用するマニフェストやクライアントソフトウェアがある場合は、バージョン 1.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 -n kube-system

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

Kubernetes 1.28

Amazon EKS で Kubernetes 1.28 が利用可能になりました。Kubernetes1.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

Amazon EKS で Kubernetes 1.27 が利用可能になりました。Kubernetes1.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.27kubelet は、デフォルトの kubeAPIQPS50 に、kubeAPIBurst100 に増やしました。これらの機能強化により、kubelet がより大量の API クエリを処理できるようになり、応答時間とパフォーマンスが向上します。  スケーリング要件により、Pods に対する需要が増加した場合、修正されたデフォルト値により、kubelet は増加したワークロードを効率的に管理できるようになります。その結果、Pod の起動が速くなり、クラスター操作がより効率的になります。

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

  • Kubernetes StatefulSets では、その PersistentVolumeClaims (PVCs) の存続期間を制御する 1.27 の新しいポリシーメカニズムがベータ版に昇格しました。新しい 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

Amazon EKS で Kubernetes 1.26 が利用可能になりました。Kubernetes1.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 を使用して Pod に IP を割り当てる」を参照してください。

  • 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」を参照してください。