このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
延長サポートの Kubernetes バージョンに関するリリースノートを確認する
Amazon EKS は、アップストリームでサポートされているよりも長く Kubernetes バージョンをサポートしており、Amazon EKS でリリースされてから 14 か月間は Kubernetes マイナーバージョンの標準サポートと、さらに 12 か月間のサポート (バージョンごとに合計 26 か月) は Kubernetes マイナーバージョンの拡張サポートを提供します。
このトピックでは延長サポートにおいて各 Kubernetes バージョンで注意すべき重要な変更点を説明します。アップグレードするときはクラスターの古いバージョンと新しいバージョン間で発生した変更を注意深く確認してください。
Kubernetes 1.29
Amazon EKS で Kubernetes 1.29
が利用可能になりました。Kubernetes1.29
の詳細については、公式リリースのお知らせ
重要
-
FlowSchema
とPriorityLevelConfiguration
の非推奨の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-apiserver
、kube-scheduler
、kube-controller-manager
、cloud-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.27
のkubelet
は、デフォルトのkubeAPIQPS
を50
に、kubeAPIBurst
を100
に増やしました。これらの機能強化により、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