Container Service for Kubernetes (ACK) は、Certified Kubernetes Conformance Program の条件を厳守しています。このトピックでは、Kubernetes 1.26 をサポートするために ACK が行った変更について説明します。
目次
バージョン更新
Kubernetes 1.26 をサポートするために、ACK によってコンポーネントが更新および最適化されています。
主要コンポーネント | バージョン番号 | 説明 |
Kubernetes | 1.26.15-aliyun.1 および 1.26.3-aliyun.1 |
|
etcd | v3.5.4 | なし |
CoreDNS | 1.9.3.10-7dfca203-aliyun | なし |
CRI | Containerd 1.6.20 | Kubernetes 1.24.0 以降のみがサポートされています。 |
CSI | csi-plugin と csi-provisioner を最新バージョンに更新します。リリースノートの詳細については、csi-plugin および csi-provisioner をご参照ください。 | なし |
CNI | Flannel v0.15.1.22-20a397e6-aliyun | なし |
Terway & TerwayControlplanev1.5.0 + | なし | |
NVIDIA Container Runtime | v3.13.0 | Kubernetes 1.26 のみ NVIDIA Container Runtime v3.13.0 をサポートしています。その他の Kubernetes バージョンは NVIDIA Container Runtime v3.7.0 をサポートしています。 |
Ingress Controller | v1.6.4-aliyun.1 | なし |
更新に関する注意事項
主な変更点
Kubernetes 1.25 および 1.26 では、多数のベータ API が非推奨になっています。クラスタを Kubernetes 1.26 に更新する前に、非推奨のベータ API とやり取りする必要があるコントローラーまたはアプリケーションが、推奨される API バージョンを使用するように更新されているかどうかを確認してください。非推奨の API の詳細については、非推奨の API をご参照ください。
Kubernetes 1.26 は CRI v1alpha2 をサポートしなくなりましたが、コンテナーランタイムが CRI v1 をサポートする必要があります。そのため、Kubernetes 1.26 は containerd 1.5 以前をサポートしていません。Kubernetes 1.26 では containerd 1.6 以降を使用してください。クラスタを Kubernetes 1.26 に更新する前に、containerd を 1.6.0 以降に更新する必要があります。
PSP アドミッションコントローラーは Kubernetes 1.21 で非推奨になり、Kubernetes 1.25 から削除されました。PSP アドミッションコントローラーは複雑で、過剰な権限を提供する可能性があるため、セキュリティ上の問題を引き起こす可能性があります。詳細については、PodSecurityPolicy: The Historical Context をご参照ください。
PSP アドミッションコントローラーを使用できるクラスタの場合は、クラスタを更新する前に、次の制限のいずれかを設定してください。
ACK が提供するポリシー管理機能を使用します。ACK は、Kubernetes のシナリオに最適なポリシーを多数提供しています。これらのポリシーは構成と使用が簡単です。詳細については、「ポリシーガバナンス機能を有効にする」をご参照ください。
使いやすい組み込みの Pod Security アドミッションを使用します。詳細については、Pod Security Admission をご参照ください。PodSecurityPolicy から組み込みの PodSecurity アドミッションコントローラーへの移行方法の詳細については、PodSecurityPolicy から組み込みの PodSecurity アドミッションコントローラーに移行する をご参照ください。
サードパーティのアドミッションプラグインを手動でデプロイおよび構成します。
1.26.15-aliyun.1 では、次の CVE 脆弱性が修正されています。
CVE-2023-45288
CVE-2024-3177
CVE-2024-24786
新機能
Kubernetes 1.23 ではエフェメラルコンテナーのベータ版が使用され、Kubernetes 1.25 では安定版が使用されています。確認したいポッドがクラッシュした場合、または
kubectl execを実行するためのデバッグツールがない場合は、ポッドでエフェメラルコンテナーを実行してポッドの状態を確認し、任意のコマンドを実行できます。詳細については、Ephemeral Containers をご参照ください。Kubernetes 1.25 の cgroup v2 は Stable フェーズに達しました。cgroup v2 は cgroup v1 の最適化バージョンです。詳細については、cgroup v2 について をご参照ください。
Kubernetes 1.25 での Windows のサポートは継続的に最適化されています。たとえば、CI 単体テスト と 適合性テスト がサポートされており、Windows の運用準備状況のための新しいリポジトリを作成できます。
Kubernetes 1.25 では、イメージレジストリ k8s.gcr.io が registry.k8s.io にリダイレクトされ、リクエストも registry.k8s.io にリダイレクトされます。詳細については、k8s.gcr.io の registry.k8s.io へのリダイレクト をご参照ください。
Kubernetes 1.25 では、ネットワークポリシーの EndPort フィールドが General Availability (GA) フェーズに達しました。ネットワークプラグインが EndPort フィールドをサポートしている場合、ネットワークポリシーを構成するときに、このフィールドを使用してポートの範囲を指定できます。ネットワークプラグインが EndPort フィールドをサポートしておらず、このフィールドを使用してネットワークポリシーを作成した場合、ポリシーは単一ポートフィールドにのみ適用されます。詳細については、ネットワークポリシー をご参照ください。
Kubernetes 1.25 では、ローカルエフェメラルストレージ容量の分離が GA (正式リリース) フェーズに達しました。この機能は、EmptyDir ボリュームなど、ポッド間のローカルエフェメラルストレージの容量分離をサポートします。ポッドは、ローカルエフェメラルストレージの消費量を厳しく制限できます。ポッドのローカルエフェメラルストレージの消費量が上限を超えると、ポッドはエビクトされます。詳細については、ローカルエフェメラルストレージ容量の分離 をご参照ください。
Kubernetes 1.25 では、エフェメラル CSI ボリュームが安定バージョンに更新されました。エフェメラル CSI ボリュームを使用する場合、永続ボリューム (PV) および永続ボリューム要求 (PVC) から発生した CSI ボリュームをポッドの Spec で直接指定することはできません。詳細については、エフェメラルインライン CSI ボリューム をご参照ください。
Kubernetes 1.25 では、Key Management Service (KMS) v2 alpha1 API が導入され、パフォーマンスが向上し、キーのローテーションと可観測性が最適化されました。API は AES-CBC を AES-GCM に置き換え、DEK を使用して静的データ (Kubernetes Secrets) を暗号化します。暗号化プロセス中に追加の操作は必要ありません。暗号化されたデータは、AES-GCM と AES-CBC を使用して復号化できます。詳細については、データ暗号化のための KMS プロバイダーの使用 をご参照ください。
Kubernetes 1.25 では、Container Object Storage Interface (COSI) 標準が導入され、オブジェクトストレージのプロビジョニングと消費が標準化されました。COSI はアルファフェーズにあります。
Kubernetes 1.25 では、ポッドの PodHasNetwork
statusフィールドの PodHasNetwork が True の場合、ポッドランタイムサンドボックスが初期化および作成され、サンドボックスのネットワークが構成されます。これは、kubelet が PodHasNetwork が True に設定された後にのみ、イメージをプルしてコンテナーを起動するためです。したがって、このフィールドを使用して、イメージのプル速度やアプリケーションの負荷などの特性を除外したポッドの初期化レイテンシを示すことができます。PodHasNetwork を使用して、サービスレベル指標 (SLI) を正確に生成できます。PodHasNetwork はアルファフェーズにあります。PodHasNetwork を使用するには、kubelet で PodHasNetworkCondition 機能ゲートを有効にします。詳細については、ポッドに対して報告される既存の Initialized 条件とどう違うのですか? をご参照ください。Kubernetes 1.25 では、StatefulSets の minReadySeconds フィールドが Stable フェーズに達しました。このフィールドを使用すると、各ポッドが指定された時間待機できるため、StatefulSets のローリングアップデートが遅くなります。詳細については、最小準備秒数 をご参照ください。
Kubernetes 1.25 では、DaemonSet maxSurge が Stable フェーズに達しました。maxSurge は、DaemonSet のローリングアップデート中にノードで作成できる追加ポッドの数を指定します。これにより、DaemonSet のダウンタイムを最大限に短縮できます。2 つのアクティブなポッドがノード上の同じポートを共有できないため、DaemonSets で maxSurge と hostPort を同時に使用することはできません。詳細については、DaemonSet でローリングアップデートを実行する をご参照ください。
Kubernetes 1.25 では、ユーザー名前空間でポッドを実行するためのアルファサポートが追加されました。ユーザー名前空間では、ポッド内のルートユーザーをポッド外のゼロ以外の ID にマップできます。ID は、コンテナービューからはルートユーザー ID であり、ホストビューからは通常の権限のない ID です。この機能を使用するには、UserNamespacesStatelessPodsSupport 機能ゲートを有効にし、コンテナーランタイムがこの機能をサポートしていることを確認する必要があります。詳細については、Kubernetes 1.25: ユーザー名前空間でポッドを実行するためのアルファサポート をご参照ください。
Kubernetes 1.25 では、RetroactiveDefaultStorageClass 機能ゲートが追加され、デフォルトの StorageClass が PVC に割り当てられる方法が変更されました。この機能ゲートが有効になる前は、StorageClass が PVC の前に作成された場合にのみ、デフォルトの StorageClass が PVC に割り当てられました。それ以外の場合、PVC の StorageClass は nil 状態のままです。この機能ゲートが有効になると、PVC などを削除してから再作成する必要がなくなります。デフォルトの StorageClass が PVC に自動的に割り当てられます。この機能ゲートは Kubernetes 1.26 でベータフェーズに達し、Kubernetes 1.26 ではデフォルトで有効になっています。
Kubernetes 1.25 では、JobPodFailurePolicy が追加されました。この機能を使用すると、ポッドの終了コードと状態に基づいてポッドの中断を処理するようにジョブを構成できます。この機能は Kubernetes 1.26 でベータフェーズに達します。ジョブで podFailurePolicy フィールドを定義して、ポッドの障害ポリシーを構成し、不要なポッドの再試行を回避し、ポッドのエビクションを無視できます。詳細については、ポッド障害ポリシーによる再試行可能および再試行不可能なポッド障害の処理 をご参照ください。
Kubernetes 1.25 では、ローリングアップデート中に PodTopologySpread がポッドを均等に分散できない問題が修正されました。minDomains フィールドのベータサポートが追加されました。
Kubernetes 1.25 では、kube-proxy が大規模クラスタ向けに最適化されています。たとえば、1,000 個のエンドポイントを持つクラスタでは、未使用の iptables ルールが一定期間保持されます。最大保持期間は、iptables ルールの最大同期サイクルと同じです。したがって、毎回古い iptables ルールをスキャンする必要がなくなります。小規模クラスタでは、未使用の iptables ルールはすぐに削除されます。
Kubernetes 1.26 では、動的リソース割り当て API が追加されました。API を使用して、ポッド間またはポッド内のコンテナー間でリソースを要求および共有できます。API は、リソースを初期化するためのパラメーターも提供します。API はアルファフェーズにあります。この API を使用するには、DynamicResourceAllocation 機能ゲートと resource.k8s.io/v1alpha1 API グループを有効にし、管理するリソースのリソースドライバーをインストールする必要があります。詳細については、動的リソース割り当てのためのアルファ API をご参照ください。
Kubernetes 1.26 では、非グレースフルノードシャットダウン がベータフェーズに達しました。ノードがシャットダウンされると、ノード上のポッドは Terminating 状態のままになり、VolumeAttachments を削除できません。ポッドが StatefulSet によって作成された場合、重複するポッド名は許可されていないため、ポッドを別のノードで再作成できません。kubelet によって実行されるノードシャットダウン監視に基づく グレースフルノードシャットダウン と比較して、
out-of-servicetaint をノードに手動で追加して、非グレースフルノードシャットダウンをトリガーし、ノード上のポッドを別のノードに移行する必要があります。ノードが回復したら、taint を手動で削除する必要があります。Kubernetes 1.26 では、ボリュームをポッドにマウントするときに、fsGroup を CSI ドライバーに委任できます。この機能は、kubelet の代わりに CSI ドライバーが fsGroup を適用して、ファイルとディレクトリの権限を変更するためのメカニズムを提供します。この機能はユーザーにとって透過的です。CSI ドライバー開発者の場合は、CSI ドライバー fsGroup サポート をご参照ください。
Kubernetes 1.26 では、ポッドスケジューリングゲートが追加され、ポッドがスケジューリングの準備ができたらスケジューラに通知します。外部イベントが原因で多数の保留中のポッドをスケジューリングできない場合、スケジューラのパフォーマンスに悪影響を及ぼします。前述の問題を解決するために、ポッドスケジューリングゲートを使用すると、新しく作成されたポッドがスケジューリングの準備ができていないことを主張できます。ポッドに
spec.schedulingGatesが構成されている場合、スケジューラはポッドのスケジューリング時にポッドを無視します。このゲートには、ポッドがスケジューリングの準備ができたら確認し、ゲートを削除する外部コントローラーが必要です。詳細については、ポッドスケジューリングの準備状況 をご参照ください。Kubernetes 1.26 では、CPU マネージャーが GA フェーズに達しました。この機能は Kubernetes 1.10 でベータフェーズに達しています。CPU マネージャーは kubelet の一部であり、コンテナーに専用の CPU を割り当てるために使用されます。CPU マネージャーは 3 つのポリシーをサポートしています。詳細については、ノードの CPU 管理ポリシーを制御する をご参照ください。
Kubernetes 1.26 では、名前空間をまたがるストレージデータソースのアルファサポートが追加されました。この機能を使用すると、PVC に異なる名前空間に属するデータソースを指定できます。詳細については、Kubernetes v1.26: 名前空間をまたがるストレージデータソースのアルファサポート をご参照ください。
Kubernetes 1.26 では、
.spec.unhealthyPodEvictionPolicy=AlwaysAllowポリシーを設定して、PodDisruptionBudget が常に異常なポッドのエビクションを許可するように強制できます。この機能はアルファフェーズにあります。この機能を使用するには、PDBUnhealthyPodEvictionPolicy 機能ゲートを有効にする必要があります。詳細については、異常なポッドのエビクションポリシー をご参照ください。Kubernetes 1.26 では、コンテナーライフサイクルフック preStop および postStart の
httpGetは、schemeフィールドとheadersフィールドの設定に準拠しています。プローブと同じ方法で、カスタムヘッダーを構成し、HTTPS を有効にできます。誤って HTTPS が使用された場合、エラーメッセージが返され、互換性の問題を引き起こすことなくシステムは HTTP に切り替わります。kubelet で--feature-gates=ConsistentHTTPGetHandlers=falseを指定して、この機能を無効にすることができます。Kubernetes 1.26 では、API Priority and Fairness (APF) は他の優先順位レベルからシートを借用できます。
.spec.limitedに 2 つのフィールドが追加されました。lendablePercentフィールドは、他の優先順位レベルが現在のレベルから借用できるシートの割合を指定します。borrowingLimitPercentフィールドは、他の優先順位レベルから借用できるシートの数を指定します。Kubernetes 1.26 では、kube-controller-manager コンポーネントに
--concurrent-horizontal-pod-autoscaler-syncsを設定して、Horizontal Pod Autoscaler (HPA) コントローラーが使用するワーカーの数を指定できます。Kubernetes 1.26 では、HPA のラベルセレクターが検証されます。複数の HPA が同じポッドまたはデプロイメントのコレクションを指している場合、HPA は有効にならず、AmbiguousSelector イベントが生成されます。
Kubernetes 1.26 では、
storageclass.kubernetes.io/is-default-classアノテーションを追加することで複数の StorageClass がデフォルトの StorageClass として指定されている場合、システムは例外をスローする代わりに最新の StorageClass を選択します。
非推奨の機能
非推奨および削除されたストレージドライバー
Kubernetes 1.25 では、ストレージ統合のためのインツリーストレージプラグインが削除されました。SIG Storage は、以前の Kubernetes バージョンでインツリーストレージプラグインをアウトオブツリー Container Storage Interface (CSI) プラグインに移行するために、CSI 移行 をリリースしました。Kubernetes 1.25 では、コア CSI 移行 が GA フェーズに達しました。
Kubernetes 1.25 では、GlusterFS と Portworx インツリー ストレージプラグインは非推奨になり、Flocker、Quobyte、StorageOS インツリーストレージプラグインは削除されました。イントリー vSphere ストレージドライバー は、7.0u2 より前の vSphere バージョンをサポートしていません。
Kubernetes 1.26 では、GlusterFS インツリーストレージドライバーは非推奨になり、非推奨の OpenStack インツリーストレージ統合 (Cinder ボリューム) が削除されました。
iptables チェーン所有権のクリーンアップ
Kubernetes は通常、パケットが宛先に到達できるように iptable チェーンを作成します。iptables チェーンとその名前は Kubernetes の内部実装であり、内部使用のみに適しています。一部のコンポーネントは iptable チェーンに依存していますが、これらのチェーンは Kubernetes のどのコンポーネントの一部になることも意図されていません。詳細については、Kubernetes の IPTables チェーンは API ではありません をご参照ください。
1.25 以降の Kubernetes バージョンでは、kubelet は IPTablesCleanup 機能ゲートを使用して段階的に移行を完了します。これにより、NAT テーブルに KUBE-MARK-DROP、KUBE-MARK-MASQ、KUBE-POSTROUTING などの iptable チェーンが作成されなくなります。
iptables チェーン所有権のクリーンアップの詳細については、IPTables チェーン所有権のクリーンアップ をご参照ください。
イントリー資格情報管理コードの削除
1.26 以降の Kubernetes バージョンでは、Azure および Google Cloud のネストされた身元認証コードが client-go および kubectl から削除されました。認証プラグインを使用して置き換えることができます。詳細については、認証プラグイン をご参照ください。
kube-proxy からユーザー空間モードを削除する
Kubernetes 1.26 では、ユーザー空間モードが削除されました。非推奨のユーザー空間モードは、Linux でも Windows でもサポートされなくなりました。Linux ユーザーは iptables または IPVS を使用でき、Windows ユーザーはカーネル空間モードを使用できます。
--mode userspaceを使用すると、エラーが返されます。Windows winkernel kube-proxy は Windows HNS v1 API をサポートしなくなりました。
Kubectl は
--prune-whitelistフラグを非推奨にしましたKubernetes 1.26 では、
--prune-whitelistフラグは 非推奨 になり、非推奨--prune-allowlistInclusive Naming Initiative をサポートするために に置き換えられました。非推奨のフラグは、後のバージョンで削除されます。DynamicKubeletConfig 機能ゲートの削除
DynamicKubeletConfig 機能ゲートが削除されました。ノードの kubelet 構成は、API を呼び出すことによって動的に更新できます。機能ゲートは Kubernetes 1.24 の kubelet から削除され、Kubernetes 1.26 の API サーバーから削除されました。これにより、コードが簡素化され、安定性が向上します。代わりに kubelet 構成ファイルを変更してから kubelet を再起動することをお勧めします。詳細については、コードから DynamicKubeletConfig 機能ゲートを削除する をご参照ください。
コマンドライン引数の削除
Kubernetes 1.25 では、kubeadm UnversionedKubeletConfigMap が GA フェーズに達しました。デフォルトでは、kube-system または kubelet-config が kube-system または kubelet-config-x.yy の代わりに使用されます。
Kubernetes 1.25 では、kubeadm は
node-role.kubernetes.io/master:NoScheduleラベルをコントロールプレーンノードに追加しなくなりました。kubeadm upgrade apply が使用されると、ラベルは削除されます。Kubernetes 1.25 では、Seccomp アノテーション
seccomp.security.alpha.kubernetes.io/podとcontainer.seccomp.security.alpha.kubernetes.ioはサポートされなくなりました。SeccompProfile を使用することをお勧めします。詳細については、seccomp でコンテナーのシステムコールを制限する をご参照ください。Kubernetes 1.25 および 1.26 では、kube-controller-manager の一部の起動引数が非推奨になり、削除されました。
deleting-pods-qps、deleting-pods-burst、register-retry-count 引数が削除されました。
experimental-cluster-signing-duration および pod-eviction-timeout 引数は非推奨になり、cluster-signing-duration に置き換えられました。
Kubernetes 1.27 では、pod-eviction-timeout と enable-taint-manager が削除されます。
Kubernetes 1.26 では、ロギング関連のコマンドライン引数の一部が 削除 されました。これらの引数は、以前のバージョンで 非推奨 になっています。
Kubernetes 1.26 では、--master-service-namespace フラグは非推奨 です。フラグは API サーバーでは使用されていません。
Kubernetes 1.26 では、kubectl run の次の未使用のサブコマンドが 非推奨 としてマークされており、後のバージョンで削除されます。
--cascade、--filename、--force、--grace-period、--kustomize、--recursive、--timeout、--wait。
非推奨の API
Kubernetes 1.25 および 1.26 では、一部の API が非推奨になっています。詳細については、非推奨の API をご参照ください。
CronJob
1.25 以降の Kubernetes バージョンでは、batch/v1beta1 API を使用して CronJob を作成できなくなりました。Kubernetes 1.21 以降のバージョンで使用可能な batch/v1 API を使用できます。
EndpointSlice
1.25 以降の Kubernetes バージョンでは、discovery.k8s.io/v1beta1 API を使用して EndpointSlice を作成できなくなりました。Kubernetes 1.21 以降のバージョンで使用可能な discovery.k8s.io/v1 API を使用できます。
discovery.k8s.io/v1 の次の変更点に細心の注意を払う必要があります。
エンドポイントの NodeName フィールドは、非推奨の topology["kubernetes.io/hostname"]g フィールドの代わりに使用されます。
エンドポイントの Zone フィールドは、非推奨の topology["kubernetes.io/zone"] フィールドの代わりに使用されます。
Topology フィールドは、非推奨の deprecatedTopology フィールドに置き換えられます。フィールドは API v1 では使用できません。
重要クラスタのアップグレード後、CoreDNS ポッド
failed to list *v1beta1.EndpointSliceを示すエラーメッセージが表示されるかどうかを確認します。表示される場合は、CoreDNS コンポーネントを再起動またはアップグレードします。詳細については、「CoreDNS が非推奨の API を使用する理由」をご参照ください。イベント
Kubernetes 1.25 では、events.k8s.io/v1beta1 API を使用してイベントを作成できなくなりました。Kubernetes 1.19 以降のバージョンで使用可能な events.k8s.io/v1 API を使用できます。
events.k8s.io/v1 の次の変更点に細心の注意を払う必要があります。
type フィールドは Normal または Warning にのみ設定できます。
involvedObject フィールドの名前が regarding に変更されました。
events.k8s.io/v1 イベントを作成するときは、action、reason、reportingController、reportingInstance フィールドが必要です。
eventTime フィールドは、非推奨の firstTimestamp フィールドの代わりに使用されます。firstTimestamp フィールドの名前は deprecatedFirstTimestamp に変更され、events.k8s.io/v1 イベントでは許可されていません。
series.lastObservedTime フィールドは、非推奨の lastTimestamp フィールドの代わりに使用されます。lastTimestamp フィールドの名前は deprecatedLastTimestamp に変更され、events.k8s.io/v1 イベントでは許可されていません。
series.count フィールドは、非推奨の count フィールドの代わりに使用されます。count フィールドの名前は deprecatedCount に変更され、events.k8s.io/v1 イベントでは許可されていません。
reportingController フィールドは、非推奨の source.component フィールドの代わりに使用されます。source.component フィールドの名前は deprecatedSource.component に変更され、events.k8s.io/v1 イベントでは許可されていません。
reportingInstance フィールドは、非推奨の source.host フィールドの代わりに使用されます。source.host フィールドの名前は deprecatedSource.host に変更され、events.k8s.io/v1 イベントでは許可されていません。
PodDisruptionBudget
1.25 以降の Kubernetes バージョンでは、policy/v1beta1 API を使用して PodDisruptionBudget を作成できなくなりました。Kubernetes 1.21 以降のバージョンで使用可能な policy/v1 API を使用できます。
policy/v1 の次の変更点に細心の注意を払う必要があります。policy/v1 PodDisruptionBudgets で spec.selector を空 ({}) にすると、名前空間内のすべてのポッドが選択されます。policy/v1beta1 PodDisruptionBudgets では、spec.selector を空にすると、ポッドは選択されません。spec.selector を指定しない場合、どちらの API バージョンでもポッドは選択されません。
PodSecurityPolicy
1.25 以降の Kubernetes バージョンでは、policy/v1beta1 API を使用して PodSecurityPolicy を作成できなくなり、PSP アドミッションコントローラーが削除されました。Pod Security Admission またはサードパーティのアドミッション webhook に移行する必要があります。
移行の詳細については、PodSecurityPolicy から組み込みの PodSecurity アドミッションコントローラーに移行する をご参照ください。非推奨の詳細については、PodSecurityPolicy の非推奨: 過去、現在、そして未来 をご参照ください。
RuntimeClass
1.25 以降の Kubernetes バージョンでは、node.k8s.io/v1beta1 API を使用して RuntimeClass を作成できなくなりました。Kubernetes 1.20 以降のバージョンで使用可能な node.k8s.io/v1 API を使用できます。
HorizontalPodAutoscaler
1.25 以降の Kubernetes バージョンでは、autoscaling/v2beta1 API を使用して Horizontal Pod Autoscaler (HPA) を作成できなくなりました。
1.26 以降の Kubernetes バージョンでは、autoscaling/v2beta2 API を使用して HPA を作成できなくなりました。Kubernetes 1.23 以降のバージョンで使用可能な autoscaling/v2 API を使用できます。
フロー制御リソース
1.26 以降の Kubernetes バージョンでは、flowcontrol.apiserver.k8s.io/v1beta1 API を使用して FlowSchema または PriorityLevelConfiguration を作成できなくなりました。API は Kubernetes 1.23 以降のバージョンで flowcontrol.apiserver.k8s.io/v1beta2 を使用できます。API は Kubernetes 1.26 以降のバージョンで flowcontrol.apiserver.k8s.io/v1beta3 を使用できます。
機能ゲート
機能ゲートには 3 つのフェーズがあります。アルファフェーズでは、機能ゲートはデフォルトで無効になっています。ベータフェーズでは、機能ゲートはデフォルトで有効になっています。GA フェーズでは、機能ゲートはデフォルトで有効になっており、無効にすることはできません。機能ゲートを有効および無効にするために使用されるスイッチは、後のバージョンで削除されます。詳細については、機能ゲート をご参照ください。
Kubernetes 1.25 では、SeccompDefault がベータフェーズに到達しました。SeccompDefault の使用方法の詳細については、「seccomp を使用してコンテナのシステムコールを制限する」をご参照ください。
Kubernetes 1.25 では、カスタムリソース定義 (CRD) 検証式言語がベータ段階に到達し、CustomResourceValidationExpressions がデフォルトで有効になります。Webhook を使用するよりも Common Expression Language (CEL) を使用して CRD を検証する方が効率的です。詳細については、「検証ルール」をご参照ください。
Kubernetes 1.25 では、ServerSideFieldValidation 機能ゲートがベータフェーズに到達し、デフォルトで有効になっています。API サーバーは不明なフィールドを検証できます。そのため、フィールド検証機能は、後続のバージョンで kubectl から削除されます。詳細については、「API サーバーでサポートされている不明なフィールド検証」をご参照ください。
Kubernetes 1.25 では、ContainerCheckpoint アルファ機能が追加され、Kubelet チェックポイント API が有効になります。詳細については、「Kubelet チェックポイント API」をご参照ください。
Kubernetes 1.25 では、PodHasNetwork 条件のアルファ機能が追加されました。この機能により、kubelet はポッドに PodHasNetwork 条件を追加できます。詳細については、「PodHasNetwork」をご参照ください。
Kubernetes 1.25 では、UserNamespacesStatelessPodsSupport アルファ機能が追加され、ステートレス ポッドに対してユーザー名前空間が有効になります。
Kubernetes 1.25 では、JobPodFailurePolicy アルファ機能が追加されました。この機能を使用すると、ジョブはポッドの終了コードとステータスに基づいてポッドの中断を処理できます。この機能は、Kubernetes 1.26 でベータ段階になります。
Kubernetes 1.25 では、MultiCIDRRangeAllocator アルファ機能が追加され、NodeIPAM で複数の ClusterCIDR がサポートされるようになりました。
--cidr-allocator-type=MultiCIDRRangeAllocatorが kube-controller-manager に対して構成され、コントローラーが複数の ClusterCIDR をサポートできるようになります。Kubernetes 1.25 では、StatefulSetMinReadySeconds 機能が GA フェーズに到達しました。この機能は、デフォルトで minReadySeconds フィールドをサポートしており、無効にすることはできません。
Kubernetes 1.25では、CronJobTimeZone機能がGAフェーズに到達します。 この機能はデフォルトでTimeZoneフィールドをサポートするために有効になっており、無効にすることはできません。
Kubernetes 1.25 では、DaemonSetUpdateSurge 機能が GA フェーズに到達しました。この機能は DaemonSet MaxSurge フィールドをサポートするためにデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.25 では、IdentifyPodOS 機能が GA フェーズに到達しました。この機能は、spec.podOS フィールドをサポートするためにデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.25 では、CSIInlineVolume 機能が GA フェーズに到達しました。この機能は CSI インライン ボリュームをサポートするためにデフォルトで有効になっており、無効にすることはできません。
Kubernetes 1.25 では、EphemeralContainers 機能が GA フェーズに到達しました。この機能はデフォルトで有効になっており、一時的なコンテナーをサポートし、無効にすることはできません。
Kubernetes 1.25 では、CSINodeExpandSecret 機能が追加されました。この機能を使用すると、ノードを追加するときに、Secrets に格納されている ID 認証データを CSI ドライバーに渡すことができます。
Kubernetes 1.25 では、CSIMigration 機能が GA フェーズに到達しました。この機能はデフォルトで有効になっており、無効にすることはできません。
App Service プランは、Web アプリの場所、機能、およびコンピューティング リソースを定義します。az appservice plan create コマンドを使用して App Service プランを作成します。
Kubernetes 1.25 では、ProbeTerminationGracePeriod 機能はまだベータ段階ですが、デフォルト値は True に変更されます。詳細については、「プローブレベルの terminationGracePeriodSeconds」をご参照ください。
Kubernetes 1.26 では、JobTrackingWithFinalizers 機能が GA フェーズに到達しました。この機能はデフォルトで有効になっており、残りのポッド数をカウントする代わりにジョブのポッドを追跡することで、ジョブの進捗状況を追跡します。詳細については、「ファイナライザーを使用したジョブ追跡」をご参照ください。
Kubernetes 1.26 では、RetroactiveDefaultStorageClass がベータフェーズに達し、デフォルトで有効になっています。
Kubernetes 1.26 では、JobPodFailurePolicy がベータフェーズに達し、デフォルトで有効になっています。
Kubernetes 1.26 では、NonGracefulNodeShutdown がベータフェーズに達し、デフォルトで有効になっています。
Kubernetes 1.26 では、ServiceInternalTrafficPolicy 機能が GA フェーズに到達しました。この機能を使用すると、internalTrafficPolicy フィールドを使用して サービス の内部トラフィック ポリシーを定義できます。この機能はデフォルトで有効になっており、無効にすることはできません。詳細については、「Service Internal Traffic Policy」をご参照ください。
Kubernetes 1.26 では、LocalStorageCapacityIsolationFSQuotaMonitoring が GA フェーズに達しました。
Kubernetes 1.26では、MixedProtocolLBService機能がGAフェーズに到達します。 この機能により、同じLoadBalancerサービスで異なるプロトコルを使用できます。
Kubernetes 1.26 では、CSIMigrationGCE が GA フェーズに達しました。
Kubernetes 1.26 では、CSIMigrationOpenStack が GA フェーズに達しました。
Kubernetes 1.26 では、CSIMigrationvSphere が GA フェーズに達しました。
Kubernetes 1.26 では、NodeOutOfServiceVolumeDetach 機能がベータ版になり、デフォルトで有効になっています。
node.kubernetes.io/out-of-servicetaint を追加してノードをアウトオブサービスとしてマークすると、taint を許容しないポッドは強制的に削除されます。ノード上の終了したポッドに対してボリュームのデタッチ操作が実行されます。Kubernetes 1.26 では、RecoverVolumeExpansionFailure が GA フェーズに達しました。
Kubernetes 1.26 では、HonorPVReclaimPolicy が GA フェーズに達しました。
Kubernetes 1.26 では、ComponentSLIs アルファ機能が追加され、ヘルスチェック メトリックを収集するために、kubelet、kube-scheduler、kube-proxy、kube-controller-manager、および cloud-controller-manager の以下の Kubernetes コンポーネントで
/metrics/slisエンドポイントが有効になります。Kubernetes 1.26 では、ImmutableEphemeralVolumes が GA フェーズに達しました。
Kubernetes 1.26 では、GenericEphemeralVolume が GA フェーズに達しました。
Kubernetes 1.26 では、VolumePVCDataSource が GA フェーズに達しました。
Kubernetes 1.26 では、DefaultPodTopologySpread が GA フェーズに達しました。
Kubernetes 1.26 では、LegacyServiceAccountTokenTracking アルファ機能が追加されました。デフォルトでは、この機能は無効になっています。この機能は、Secrets に基づいて生成された ServiceAccount トークンに
kubernetes.io/legacy-token-last-usedラベルを追加し、トークンの有効期限を示します。Kubernetes 1.26 では、PodDisruptionConditions 機能がベータ版になり、デフォルトで有効になっています。Pod に DisruptionTarget 条件を追加して、Pod が中断によって削除されようとしていることを示し、
reasonフィールドで Pod 終了の理由をクエリできます。詳細については、「Pod disruption conditions」をご参照ください。
Kubernetes 1.26 の機能強化
セキュリティの強化
FTP を使用して WordPress ファイルをアップロードすることもできます。詳細については、「FTP/S を使用してコンテンツをデプロイする」をご参照ください。
ファイルパス | アクセス許可 |
/etc/kubernetes/admin.conf | 600 |
/etc/kubernetes/kube.conf | 600 |
/etc/kubernetes/controller-manager.conf | 600 |
/etc/kubernetes/kubelet.conf | 600 |
/etc/kubernetes/scheduler.conf | 600 |
/etc/kubernetes/manifests/*.yaml | 600 |
/etc/kubernetes/pki/*.key | 600 |
/etc/kubernetes/pki/*.crt | 600 |
/etc/kubernetes/pki/dashboard/*.crt | 600 |
/etc/kubernetes/pki/etcd/*.pem | 600 |
/var/lib/etcd/cert/*.pem | 600 |
/var/lib/etcd/cert/*.csr | 600 |
/var/lib/kubelet/pki/*.crt | 600 |
/var/lib/kubelet/config.yaml | 600 |
/usr/lib/systemd/system/etcd.service | 600 |
/etc/systemd/system/kubelet.service | 600 |
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf | 600 |