このトピックでは、コンポーネントのバージョン更新、非推奨事項、アップグレード前に必要な対応、新機能など、Kubernetes 1.20 をサポートするための ACK Lingjun の変更点について説明します。
コンポーネントのバージョン
| コンポーネント | バージョン | 変更点 |
|---|---|---|
| Kubernetes | 1.20.11-aliyun.1 | アップグレード前に必要な対応については、「アップグレード前の注意点」をご参照ください。 |
| Docker ランタイム | 19.03.5 | — |
| containerd | 1.5.10 | — |
| etcd | 3.4.3 | — |
| CoreDNS | v1.9.3.6-32932850-aliyun | 非推奨の upstream プラグインは、アップグレード中に安全な方法で自動的に削除されます。メトリック名が変更されました。お使いのモニタリングシステムが CoreDNS のメトリックに依存している場合は、更新してください。新機能:EndpointSlices のモニタリングと IPv6 の DNS 名前解決。 |
| NVIDIA Container Runtime | 3.13.0 | — |
アップグレード前の注意点
クラスターを Kubernetes 1.20 にアップグレードする前に、以下の対応を完了してください。これらの手順を省略すると、アップグレードの失敗やサービスの中断を引き起こす可能性があります。
対応必須:アドミッション Webhook の証明書にサブジェクト代替名 (SAN) を追加
Kubernetes 1.20 では、クラスター内のすべての アドミッション Webhook の自己署名サーバー証明書にサブジェクト代替名 (SAN) が必要です。アップグレード前に Webhook の証明書を確認してください。参考として、こちらのサンプル Helm チャートをご参照ください。
対応必須:アップグレード前に alicloud-nas-controller を更新
クラスターに FlexVolume と alicloud-nas-controller の両方がデプロイされている場合、Kubernetes 1.20 にアップグレードする前に、alicloud-nas-controller イメージをバージョン 1.14.8.17-7b898e5-aliyun 以降にアップデートしてください。FlexVolume は非推奨です。アップグレード後、コンテナストレージインターフェイス (CSI) に移行してください。
非推奨と削除
Docker ランタイムの非推奨
Docker ランタイムは Kubernetes 1.20 で非推奨となり、将来のアップストリーム Kubernetes リリースで削除される予定です。すでに Docker を実行しているクラスターは引き続き動作します。この変更はコンテナイメージには影響しません。詳細については、「Dockershim Deprecation FAQ」をご参照ください。
selfLink フィールドの非推奨
selfLink フィールドは kube-apiserver で非推奨になりました。詳細については、「Stop setting SelfLink in kube-apiserver」をご参照ください。
node-role.kubernetes.io/master ラベルの非推奨
node-role.kubernetes.io/master ラベルは Kubernetes 1.20 以降のバージョンで非推奨になりました。ACK 専用クラスターでは、デフォルトでマスターノードに node-role.kubernetes.io/control-plane ラベルが追加されるようになりました。
Ingress API バージョンの非推奨
extensions/v1beta1 と networking.k8s.io/v1beta1 は Ingress と IngressClasses の管理に使用できなくなり、Kubernetes 1.22 以降のバージョンで非推奨となる予定です。代わりに networking.k8s.io/v1 を使用してください。
ACK クラスターにデフォルトでインストールされる NGINX Ingress Controller は、networking.k8s.io/v1beta1 API バージョンを使用して Ingress と IngressClasses を管理します。CoreDNS の upstream プラグインの削除
非推奨の upstream プラグインはサポートされなくなりました。Corefile に upstream プラグインが存在する場合、CoreDNS のアップグレード時に安全な方法で自動的に削除されます。
CoreDNS メトリック名の変更
CoreDNS のメトリック名が変更されました。お使いのモニタリングシステムが CoreDNS のメトリックに依存している場合は、アップグレード後にメトリック名を更新してください。変更の全リストについては、「CoreDNS 1.7.0 metric changes」をご参照ください。
新機能と機能強化
kubelet exec プローブのタイムアウトに関する修正
kubelet exec プローブが、設定されたタイムアウト値を遵守するようになりました。デフォルトのタイムアウトは 1 秒ですが、一部のプローブにとっては短すぎる可能性があります。明示的なタイムアウトが設定されていない exec プローブがある場合は、プローブの想定実行時間に合わせてタイムアウト値を設定してください。
API Priority and Fairness (パブリックプレビュー)
API Priority and Fairness (APF) は Kubernetes 1.20 でデフォルトで有効になります。この機能を使用して、kube-apiserver に送信されるリクエストを制限し、優先順位を付けることができます。詳細については、「API Priority and Fairness」をご参照ください。
EndpointSlices のデフォルトでの有効化 (ベータ版)
大規模クラスターをサポートするため、Kubernetes 1.19 以降では kube-proxy が EndpointSlices を自動的に有効にします。詳細については、「EndpointSlices」をご参照ください。
不変 (Immutable) な ConfigMap と Secret (パブリックプレビュー)
ConfigMap または Secret を不変 (immutable) に設定して、それ以上の変更を防ぐことができます。これにより、不変オブジェクトに対する watch 操作が不要になるため、kube-apiserver への負荷が軽減されます。詳細については、「Immutable ConfigMaps」をご参照ください。
コントロールプレーンの改善
可観測性: リクエストと watch 操作のメトリックが収集され、コントロールプレーンコンポーネントの動作の可視性が向上しました。
安定性: クラスター起動時の過剰なリクエストから etcd が保護され、システム全体の安定性が向上しました。
パフォーマンス: list リクエスト処理を高速化するためのインデックスが追加され、kube-apiserver の CPU 使用率が削減されました。
パフォーマンスの改善
Kubernetes 1.20.11 では、kube-proxy はカーネルバージョン 4.19.91-23 以降の Alibaba Cloud Linux 2 と互換性があります。IPVS モードが有効な場合、conn_reuse_mode は 0 に設定されなくなりました。詳細については、関連するアップストリームの issue をご参照ください。