2022 年 12 月 8 日、太平洋時間、Kubernetes は「Electrifying」をテーマにした v1.26 を正式にリリースしました。
2022年最後のバージョンとして、多くの新機能が追加され、安定性も大幅に向上したバージョン1.26のアップデートを以下の観点からご紹介します。
アップデートの概要:
-
Kube APIServer: Kubernetes リクエストのエントリ ポイントとして、このアップデートでは 4 つの新しい KEP 関数が追加され、応答圧縮でいくつかの最適化が行われ、他の 2 つの関数もアルファからベータにアップグレードされました。
-
ノード: kubelet に最も密接に関連する更新をここに配置します。主に 4 つの新しい KEP 機能が含まれており、このバージョンでは 4 つの機能が GA です。
-
ストレージ: ストレージに関しては、他の名前空間のスナップショットからボリュームを割り当てる機能 (クロス名前空間) が追加され、ストレージ関連の 2 つの機能がベータ段階に入り、3 つの機能が正式に GA になりました。
-
ネットワーク: 主に、パフォーマンスが最適化された KEP を含む Kube Proxy のアップデートであり、2 つの機能がベータ版に入り、4 つの機能が正式に GA に入りました。
-
リソースの制御と調整: 主に kube-controller-manager の関連リソース コントローラーの更新のため、2 つの新しい KEP 機能もあり、2 つの機能はアルファからベータにアップグレードされ、1 つの機能は正式に GA です。
-
スケジューラ: 主に重要な KEP 機能が追加されました。PodSchedulingReadiness は、スケジューラによってポッドをいつスケジュールできるかを制御するために使用され、1 つの機能がアルファからベータにアップグレードされました。
-
可観測性: 可観測性の点では、コンポーネントのステータスを公開するための新しいメカニズムであるコンポーネント ヘルス SLI が追加され、さらに多くのインジケーターが各コンポーネントに追加されます。
-
kubectl コマンド、kubeadm、client-go にもいくつかの最適化とバグ修正が行われています。
-
GA となった機能については、Kubernetes のバージョンイテレーション戦略に従い、1.26 で 11 個の機能ゲートも削除されており、これらの機能ゲートがコンポーネントコマンドに設定されたままの場合、コンポーネントは正常に起動しなくなります。
次に、アップグレードに影響する、より重要な API の非推奨と変更のいくつかを見てみましょう。
01
APIの非推奨
と変更
PR#110618 Kubelet は CRI の v1alpha2 バージョンをサポートしなくなり、接続されたコンテナ ランタイムはコンテナ ランタイム インターフェイスの v1 バージョンを実装する必要があります。
これは、Kubernetes v1.26 は、containerd 1.5.x 以前のバージョンをサポートしないことを意味します。ノードの kubelet を 1.26 にアップグレードする前に、containerd 1.6.x 以降にアップグレードする必要があります。
PR#112306 flowcontrol.apiserver.k8s.io は、v1beta3 バージョンを追加し、v1beta2 を最適バージョンとして設定します (1.27 では、v1beta3 が最適バージョンとして設定されます)。
PR#113336 CSIMigrationvSphere 機能は GA になっており、この機能をオフにすることはできません。
公式ヒント: Windows、XFS、または raw ブロックを使用する必要がある場合は、Kubernetes v1.26 にアップグレードしないでください。vSphere CSI Driver が v2.7.x 以降のバージョンで関連するサポートを追加した後にアップグレードできます。
PR#113710 kube-controller-manager コマンドの --pod-eviction-timeoutflag は非推奨となり、--enable-taint-managerflag とともに 1.27 で削除されました。
PR#112643 DynamicKubeletConfig は 1.23 で廃止され、kubelet のロジックは 1.24 で削除されました。この更新では、FeatureGateDynamicKubeletConfig と APIServer のロジックが削除されます。
PR#112120 Kube コンポーネント内のいくつかの無効な klog 関連フラグを削除します。
02
APIサーバーでした
KEP-2799 シークレットベースのサービスアカウントトークンの削減
この機能を有効にするかどうかを制御するアルファ機能ゲート —— LegacyServiceAccountTokenTracking を追加しました 。
LegacyServiceAccountTokenTracking が有効になっている場合、シークレットベースの SA トークンはラベル kubernetes.io/legacy-token-last-used を使用して最終使用時間を記録します。
KEP-3488 アドミッションコントロール用 CEL
関連 PR: PR#113314、PR#113349、PR#112994、PR#112792、PR#112926、PR#112858。
Kubernetes v1.25 によって提供される KEP-2876 CRD Validation Expression Language [1] に基づいて、この関数は、admissionregistration.k8s.io/v1alpha1—ValidatingAdmissionPolicy の下に新しいリソースを追加します。これにより、Validation Webhook が使用されていない場合にフィールド検証が可能になります。
apiVersion: admissionregistration.k8s.io/v1alpha1
kind: ValidatingAdmissionPolicy
metadata:
name: "demo-policy.example.com"
Spec:
failurePolicy: Fail
matchConstraints:
resourceRules:
- apiGroups: ["apps"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["deployments"]
validations:
- expression: "object.spec.replicas <= 5"
これには、リソースの spec.replicas フィールドが 5 以下である必要があります。
アルファ機能ゲートを追加 - この機能を有効にするかどうかを制御する ValidatingAdmissionPolicy
KEP-3352 集約されたディスカバリー PR#113171
現在、ユーザーは Discovery API を取得するためにグループ API とバージョン API をトラバースしてリクエストすることしかできませんが、この機能により、これらの呼び出しが /api と /apis の 2 つのインターフェイスのみに減ります。
この機能を有効にするかどうかを制御するためのアルファ機能ゲート —— AggregatedDiscoveryEndpoint を追加しました。
KEP-3325 自己ユーザー属性を取得するための認証 API PR#111333
authentication/v1alpha1 グループには、Kubernetes にマップされた自分のユーザー情報をユーザーが照会できるようにする新しいリソース SelfSubjectReview が追加されます。
また、クエリを容易にするために kubectl alpha auth whoami コマンドが追加されました。
$ kubectl alpha auth whoami -o yaml
apiVersion: authentication.k8s.io/v1alpha1
kind: SelfSubjectReview
status:
userInfo:
username: jane.doe
uid: b79dbf30-0c6a-11ed-861d-0242ac120002
groups:
- students
- teachers
- system:authenticated
extra:
skills:
- reading
- learning
subjects:
- math
- sports
この機能を有効にするかどうかを制御するために、アルファ機能ゲート —— APISelfSubjectAttributesReview を追加しました。
PR#112193 APIServer は --aggregator-reject-forwarding-redirect フラグを追加します。ユーザーはこれを false に設定して、AA (集約 API) サーバーのリダイレクト応答の転送を続行できます。デフォルトは true です。
PR#113015 カスタム リソースは --encryption-provider-config ファイルを通じて指定でき、これらのカスタム リソースは暗号化して etcd に保存できます。
応答の圧縮
PR#112299 コミュニティは、数千の本番 Kubernetes クラスターから収集された負荷テストと本番データに基づいて、Kubernetes APIServer の gzip 圧縮が現在最適ではないことを観察しました。
問題: kubernetes/kubernetes#112296
ここにいくつかの報告書[2]と会議議事録[3]があります。
PR#112309 kubeconfig に DisableCompression フィールドを追加しました。true に設定すると、応答を圧縮しなくなります。
PR#112580 kubectl に --disable-compression フラグを追加します。true に設定すると、応答を圧縮しないことが必要になります。
機能安定性のアップグレード
アルファ -> ベータ
フィーチャーゲート | KEP |
LegacyServiceAccountTokenNoAutoGeneration | KEP-2799 シークレットベースのサービスアカウントトークンの削減 |
APIサーバーID | KEP-1965 kube-apiserver アイデンティティ |
03
ノード (Kubelet)
KEP-3063 動的リソース割り当て PR#111023
resource.k8s.io/v1alpha1 グループを追加し、このグループの下に動的リソース割り当てに関連するリソース (「ResourceClaim」、「ResourceClass」、「ResourceClaimTemplate」、「PodScheduling」) を追加します。
この機能を有効にするかどうかを制御するために、アルファ機能ゲート —— DynamicResourceAllocation を追加しました 。
新しい API は、Pod が特別なタイプのリソースをリクエストできるため、Kubernetes の既存のデバイス プラグイン機能よりも柔軟性が高く、ノード レベル、クラスター レベル、またはユーザーが設定した他のモードに従って提供できます。
同様に、Pod 構造でも、動的なリソース割り当てに対する対応するサポートが追加されます。
apiVersion: v1
kind: Pod
spec:
containers:
- name: with-resource
image: busybox
command: ["sh", "-c", "set && mount && ls -la /dev/"]
resources:
claims:
- name: resource
resourceClaims:
- name: resource
source:
resourceClaimName: shared-claim
# resourceClaimTemplateName: test-inline-claim-template
KEP-3545 トポロジ マネージャーでの複数の沼の位置合わせが改善されました PR#112914
この関数は、TopologyManager を最適化することにより、NUMA (Non-Uniform Memory Access) ノードをより適切に処理します。
新しい構成可能アイテムの topologyManagerPolicyOptions フィールドと --topology-manager-policy-options フラグをそれぞれ kubelet config および kubectl コマンドに追加して、トポロジ マネージャー ポリシーの追加構成を設定します
そして、トポロジ マネージャー ポリシーの構成を制御するために 3 つのアルファ フィーチャー ゲートを追加します。
-
トポロジーマネージャーポリシーオプション
-
トポロジーマネージャーポリシーアルファオプション
-
トポロジーマネージャーポリシーベータオプション
TopologyManagerPolicyOptions は、TopologyManagerPolicyOptions 関数がサポートされるかどうかを制御し、他の 2 つは、TopologyManagerPolicy のアルファ レベルとベータ レベルのオプションを設定できるかどうかを制御するために使用されます。
もちろん、TopologyManager 機能を使用するには、TopologyManager 機能ゲートを有効にする必要がありますが、機能ゲートはすでにベータ段階にあるため、積極的に設定する必要はありません。
KEP-3386 Kubelet のイベント化された PLEG によるパフォーマンスの向上 PR#111384
この機能により、kubelet はノード内のポッドのステータスを追跡するときにコンテナ ランタイム インターフェイス (CRI) 通知にできるだけ依存することで定期的なポーリングを減らすことができ、kubelet の CPU 使用率が削減されます。
この機能を有効にするかどうかを制御するために、アルファ機能ゲート - EventedPLEG を追加しました。
PR#86139 以前のバージョンでは、コンテナの preStop および postStart ライフサイクル コールバックで httpGet が使用されている場合、スキームが HTTPS に設定されている場合でも、アクセスには http が引き続き使用され、ユーザーが設定したヘッダーは設定に適用されませんでした。リクエスト。
lifecycle:
postStart:
port: 443
httpGet:
scheme: HTTPS
httpHeadlers:
- name: HEADER
value: VALUE
この PR はこれらの問題を修正し、https アクセスが異常な場合は http リクエストにフォールバックします。フォールバックが発生すると、Pod に対して LifecycleHTTPFallback イベントが作成され、kubelet_lifecycle_handler_http_fallbacks_total インジケーターが更新されます。
さらに、アルファ機能ゲート - ConsistentHTTPGetHandlers が追加されました 。ユーザーは、kubelet で --feature-gates=ConsistentHTTPGetHandlers=false を設定して、フォールバック動作をオフにすることができます。
KEP-3503 Windows では、ノードのネットワーク名前空間にポッドを追加するかどうかを指定できる PR#112961
この機能を有効にするかどうかを制御するために、アルファ機能ゲート - WindowsHostNetworking を追加しました。
PR#112414 により、/etc/resolv.conf の複数行のオプションを Pod の単一行の設定にマージできるようになります。
options ndots:1 attempts:3
options ndots:1 attempts:3 ndots:5
->
options ndots:5 attempts:3
バグ修正
PR#113041 kubectl exec の実行時に lifecycle.preStop が原因でコンテナ名が重複するため、kubelet が間違ったコンテナを選択する問題を修正しました。
PR#108832 コンテナに limit.cpu が設定されているが、requests.cpu が「0」の場合、cgroups cpuShares は、limit.cpu を使用する代わりに最小値の 2 を取得します。
PR#112184 kubelet が --cloud-provider または --node-ip のみを設定すると、ノード内の無効なアノテーションが確実にクリアされます (alpha.kubernetes.io/provided-node-ip)。
PR#113481 kubectl ログを修正 --timestamps ログを表示すると、混沌としたランダムなタイムスタンプの問題が発生します。
PR#112518 PodDisruptionConditions 機能ゲートが有効になっているときに、NoExecute taint で汚染されたノード上でポッドが実行され続ける問題を修正しました。
PR#112123 cpuCFSQuotaPeriod の最小値を 1us ~ 1ms に設定します。1ms 未満の値を設定すると検証に失敗します。
関連 PR: PR#112077、PR#111520、PR#63437
機能安定性のアップグレード
ベータ版 -> GA版
フィーチャーゲート | KEP |
CPUマネージャー | KEP-3057 CPUManager から GA への卒業 |
デバイスプラグイン | KEP-3573 DeviceManager を卒業して GA へ |
Kubelet資格情報プロバイダー | KEP-2133 Kubelet 資格情報プロバイダー |
Windowsホストプロセスコンテナ | KEP-1981 Windows 特権コンテナのサポート |
04
保管所
KEP-3294 クロスネームスペーススナップショットからボリュームをプロビジョニングする
関連する PR: PR#113186 、PR#kubernetes-csi/external-rpovisioner#805
Kubernetes 1.26 より前では、 VolumeSnapshot を使用すると、ユーザーはスナップショットからボリュームを割り当てることができました。ただし、PersistentVolumeClaim 内の他の名前空間にある VolumeSnapshot にバインドすることはできません。
apiVersion: v1
kind: PersistentVolumeClaim
spec:
storageClassName: csi-hostpath-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
dataSourceRef:
apiGroup: snapshot.storage.k8s.io
kind: VolumeSnapshot
name: new-snapshot-demo
namespace: prod
volumeMode: Filesystem
この機能は、PVC に新しく追加されたフィールド spec.dataSourceRef.namespace を設定することにより、ユーザーがスナップショットから複数のネームスペースにボリュームを割り当てることをサポートします。
この機能を有効にするかどうかを制御するアルファ機能ゲート —— CrossNamespaceVolumeDataSourceを追加しました
機能安定性のアップグレード
アルファ -> ベータ
フィーチャーゲート | KEP |
RetroactiveDefaultStorageClass | KEP-3333 遡及的なデフォルトの StorageClass 割り当て |
ノードアウトオブサービスボリュームデタッチ |
KEP-2268 正常でないノードのシャットダウン |
ベータ版 -> GA版
フィーチャーゲート | KEP |
CSIM移行Azureファイル | KEP-625 インツリー ストレージ プラグインから CSI ドライバーへの移行 |
CSIMigrationvSphere | KEP-1491 vSphere のツリー内から CSI ドライバーへの移行 |
デリゲートFSGroupToCSIDriver | KEP-2317 Kubernetes がマウント時にポッドの fsgroup を CSI ドライバーに提供できるようにする |
05
通信網
PR#110268 kube-proxy のパフォーマンスを最適化します。ルールセット全体ではなく、iptables-restore への呼び出しで変更されたルールのみが送信されます。
この機能を有効にするかどうかを制御するアルファ機能ゲート —— MinimizeIPTablesRestore を追加しました 。
PR#108250 kube-proxy はフラグ --iptables-localhost-nodeports を追加して、ユーザーが localhost を介した NodePort のサービスへのアクセスを禁止できるようにします。
PR#111806 ユーザーが ipvs の使用を要求しても、システムが正しく設定されていない場合、iptables モードにフォールバックせず、エラーが返されます。
PR#113363 kube-proxy は、ノードに割り当てられた pod.Spec.PodCIDR が変更されたことを検出すると再起動します。
PR#112133 は、非推奨の「ユーザースペース」プロキシ モードを削除します。
機能安定性のアップグレード
アルファ -> ベータ
フィーチャーゲート | KEP |
プロキシ終了エンドポイント | KEP-1669 プロキシ終端エンドポイント |
拡張DNSConfig | KEP-2595 拡張された DNS 構成 |
ベータ版 -> GA版
フィーチャーゲート | KEP |
混合プロトコルLBサービス | KEP-1435 type=LoadBalancer のサービスでの混合プロトコルのサポート |
ServiceIPStaticSubrange | KEP-3070 動的および静的 IP 割り当て用のサービス IP 範囲の予約 |
サービス内部トラフィックポリシー | KEP-2086 サービス内部トラフィック ポリシー |
エンドポイントスライス終了条件 | KEP-1672 終端エンドポイントの追跡 |
06
リソースの制御と調整
KEP-3017 PodDisruptionBudget の PodHealthyPolicy PR#113375
異常な Pod のエビクションを考慮するタイミングを制御するために、spec.unhealthyPodEvictionPolicy フィールドを PodDisruptionBudget リソースに追加しました。
現在、spec.unhealthyPodEvictionPolicy フィールドに設定できる値は 2 つあります - IfHealthyBudget と AlwaysAllow
spec:
minAvailable: 2
selector:
matchLabels:
app: zookeeper
unhealthyPodEvictionPolicy: IfHealthyBudget
この機能を有効にするかどうかを制御するアルファ機能ゲート —— PDBUnhealthyPodEvictionPolicy を追加しました
KEP-3335 StatefulSet 開始順序 PR#112744
現在、StatefulSet はポッドに 0 から始まる番号を付けます。
この関数は、Pod の開始数を制御するために、spec.ordinals.start フィールドを StatefulSet に追加します。
apiVersion: apps/v1
kind: StatefulSet
spec:
ordinals:
start: 1
アルファ機能ゲートを追加 - この機能を有効にするかどうかを制御する StatefulSetStartOrdinal
PR#112011 複数の HPA が同じ Pod に関係している場合、動作が停止し、HPA の ScalingAction Condition が False に、Reason が AmbiguousSelector に設定されます。この PRA には、同じ Deployment を指す複数の HPA も含まれます。
機能安定性のアップグレード
アルファ -> ベータ
フィーチャーゲート | KEP |
ジョブポッド失敗ポリシー | KEP-3329 ジョブの再試行可能なポッドと再試行不可能なポッドの失敗 |
ポッドの中断条件 | KEP-3329 ジョブの再試行可能なポッドと再試行不可能なポッドの失敗 |
ベータ版 -> GA版
フィーチャーゲート | KEP |
ファイナライザーを使用したジョブ追跡 | KEP-2307 ポッドを残さないジョブ追跡 |
07
ポッドのスケジューリング
KEP-3521 ポッド スケジューリングの準備完了
関連 PR: PR#113275、PR#113274、PR#113442
Pending 状態のすべての Pod をスケジュールできるわけではありません。必要なリソースが不足しているために一部の Pod は正常にスケジュールできず、スケジューラーに追加の作業が発生します。
この機能は、Pod に spec.schedulingGates フィールドを追加して、Pod が実際のスケジューリングの準備ができているかどうかを制御します。
spec:
schedulingGates:
- name: <value>
スケジューリングは、spec.schedulingGates がクリアされた場合にのみ開始されます。
$ kubectl get pod example-po
NAME READY STATUS RESTARTS AGE
example-po 0/1 SchedulingGated 0 30s
アルファ機能ゲートを追加 - この機能を有効にするかどうかを制御する PodSchedulingReadiness
PR#111726 スケジューラのデバッグ Dummper に保留ステータスの Pod 情報を出力します。
最適化とバグ修正
PR#111809 Patch を使用して Pod ステータスを更新すると、net.ConnectionRefused に加えて、ServiceUnavailable および InternalError エラーも再試行されます。
ServiceUnavailable エラーは、APIServer が一時的にリクエストを処理できない場合に発生します。
E0805 20:54:21.624945 123623スケジューラー.go:356] ポッド foo の更新中にエラーが発生しました: サーバーは現在リクエストを処理できません (ポッド foo にパッチを適用します)
InternalError は通常、Webhook の一時的な障害が原因で発生します。
E0811 23:32:30.886582 213747Scheduler.go:357] ポッド foo の更新中にエラーが発生しました: 内部エラーが発生しました: Webhook "xyz" の呼び出しに失敗しました: Post "xyz": コンテキストの期限を超えました
機能安定性のアップグレード
アルファ -> ベータ
フィーチャーゲート | KEP |
ノード包含ポリシー | KEP-3094 PodTopologySpread スキューを計算するときに汚染/許容を考慮する |
08
可観測性
KEP-3466 Kubernetes コンポーネントのヘルス SLI
以前は Kubernetes コンポーネントの正常性情報を公開するための標準形式はありませんでしたが、この機能は各コンポーネントに新しいパス /metrics/slis を追加して、サービス レベル インジケーター (ServiceLevelIndicator) を Prometheus 形式で公開します。
各コンポーネントは次の 2 つのメトリクスを公開する必要があります。
-
ゲージ: コンポーネントの現在のヘルスチェックステータス
# HELP kubernetes_healthcheck [ALPHA] This metric records the result of a single healthcheck.
# TYPE kubernetes_healthcheck gauge
kubernetes_healthcheck{name="etcd",type="healthz"} 1
kubernetes_healthcheck{name="etcd",type="readyz"} 1
-
カウンタ: 各ヘルスチェックで検出された状態の累積数
# HELP kubernetes_healthchecks_total [ALPHA] This metric records the results of all healthcheck.
# TYPE kubernetes_healthchecks_total counter
kubernetes_healthchecks_total{name="etcd",status="success",type="healthz"} 15
kubernetes_healthchecks_total{name="etcd",status="success",type="readyz"} 15
-
それは APIServer: PR#112741 でした
-
Kube コントローラー マネージャー: PR#112978
-
Kube スケジューラー: PR#113026
-
Kubelet: PR#113030
-
久部プロキシ: PR#113057
-
クラウド コントローラー マネージャー: PR#113340
この機能を有効にするかどうかを制御するために、アルファ機能ゲート - ComponentSLI を追加しました。
いくつかのメトリクス インジケーターが各コンポーネントに追加され、いくつかのインジケーターの計算の問題が修正されました。
09
Kubectl コマンド
サブコマンドの機能強化と修正
PR#109525 kubectl wait コマンドは、 -o jsonpath= での存在しないフィールドの設定をサポートしています。これは、一部のフィールドが非同期に設定される場合に便利です
PR#111096 kubectl api-resources は、-o Wide 出力にカテゴリ列を追加し、カテゴリに基づくフィルタリングをサポートする --categories パラメータを追加します。
PR#113819 kubectl alpha イベントがトップレベルのコマンド kubectl イベントに移動されました。
PR#111093 kubectlrollouthistory --revision=<version>-ojson|yaml<resource> が json/yaml を出力し、指定されたリビジョンではなく最新バージョンを返すように修正されました。
PR#111571 ラベルが設定されているというユーザーの誤解を防ぐために、kubectl label --dry-run コマンドのプロンプト情報を最適化します。
前に
$ kubectl label pod foo bar=baz --dry-run=server
pod/foo labeled
その後
$ kubectl label pod foo bar=baz --dry-run=server
pod/foo labeled (server dry run)
PR#112556 kubectl パッチが StrategicMerigePatch を使用してカスタム リソースを更新するときのエラー メッセージを最適化します。
PR#112700 kubectl が誤って選択する API バージョンを修正しました。
PR#109505 kubectl annotate は、元の値と同じ値のアノテーションを設定するときにエラーをスローしなくなりました。
PR#110907 kubectl apply を実行するとき、--namespace が指定されているが、--prune-allowlist が指定されていない場合、名前空間以外のリソースは削除されます。この pr は警告を追加するだけです。1.28 では、kubectl apply で名前空間を指定すると、リソース pv と名前空間のない名前空間は削除されなくなりました。
PR#113116 kubectl apply は、--prune-allowlist フラグを追加します。これは、非推奨の --prune-whitelist フラグを置き換えるために --prune フラグと併用されます。
他の
PR#113146 kubectl Explain コマンドは、環境変数 KUBECTL_EXPLAIN_OPENAPIV3 を通じて OpenAPIv3 を使用できます。
PR#112553 Kubectl は出力内の端末特殊文字をエスケープします。CVE-2021-25743 を修正しました。
PR#112150 APIServer から返された無効なリクエストの kubectl の表示を最適化します。
PR#112243、PR#112261 では、kubectl run コマンドのいくつかのフラグが非推奨となり、設定されていても無視されます。
シェルの完成
PR#113636 kubectl シェル補完は、bash でのコマンド説明の表示をサポートしています。
bash-5.1$ kubectl a[tab][tab]
alpha (Commands for features in alpha)
annotate (Update the annotations on a resource)
api-resources (Print the supported API resources on the server)
api-versions (Print the supported API versions on the server, in the form of "group/version")
apply (Apply a configuration to a resource by file name or stdin)
argo (The command argo is a plugin installed by the user)
attach (Attach to a running container)
auth (Inspect authorization)
autoscale (Auto-scale a deployment, replica set, stateful set, or replication controller)
bash-5.1$ kubectl --c[tab][tab]
--cache-dir (Default cache directory)
--certificate-authority (Path to a cert file for the certificate authority)
--client-certificate (Path to a client certificate file for TLS)
--client-key (Path to a client key file for TLS)
--cluster (The name of the kubeconfig cluster to use)
--context (The name of the kubeconfig context to use)
PR#105867 は kubectl プラグインのシェル補完を提供し、プラグインは kube_complete-<pluginName> を通じてプラグイン コマンドのシェル補完を提供できます。
10
クビーズム
コマンドの修正と機能強化
PR#113005 kubeadm 結合フェーズの control-plane-preapare certs は、--dry-run での実行をサポートします。
PR#112945 は、サブフェーズのドライラン モードをサポートしています (kubeadm リセット フェーズ cleanup-node --dry-run など)。
PR#111512 新しいフェーズが kubeadm init コマンド -- show-join-command に追加されました。ユーザーは kubeadm init --skip-phase=show-join-command を渡して、結合情報の出力をスキップできます。このフェーズは単独では実行できません。
PR#112172 kubeadm restart コマンドは、/etc/kubernetes/tmp 内のコンテンツをクリーンアップする --cleanup-tmp-dir フラグを追加します。デフォルトは false です。
PR#112732 kubeadm は構成にミラー リポジトリ形式の検証を追加します。
PR#111783 kubeadm によって読み取られた kubeconfig の CertificateAuthorityData が空の場合、外部の CertificateAuthority ファイルから CA 証明書をロードしようとします。
PR#112508 プリフライト チェックで RSA および ECDSA 形式キーを許可します。
PR#110972 kubeadm リセットは、実行中に可能な限り古いデータをクリーンアップしようとします。古いデータは、各リセット フェーズが実行されるときにクリアされ、デフォルトの etcd データ ディレクトリは、remove-etcd-member フェーズが実行されるときに削除されます。 。
PR#112751 ClusterConfiguration ネットワーク関連フィールド (dnsDomain、serviceSubnet、podSubnet) を検証する際のバグを修正しました。
他の
PR#111277 kubeadm がサブコマンドを実行するときのエラー メッセージを最適化します。
PR#112008 1.25 では、node-role.kubernetes.io/master taint がコントロール プレーン ノードに設定されなくなったため、kubeadm は CoreDNSDeployment のnode-role.kubernetes.io/master トレランスを設定しなくなります。
PR#112000 kubeadm init|join|upgrade コマンドは --container-runtime フラグを削除します。これは、dockershim が削除されて以来、このフラグには --container-runtime=remote に設定できる値が 1 つしかないためです。
11
クライアントゴー
PR#112200client-go の SharedInformerFactory は、Factory 内で実行中のすべてのインフォーマーが終了するのを待機する Shutdown メソッドを追加します。
12
削除機能
新しいバージョンでは、GA 機能であるフィーチャー ゲートが削除されています。
-
ServiceLoadBalancerClass
-
ServiceLBNodePortControl
-
CSR期間
-
DefaultPodTopologySpread
-
非プリエンプティング優先度
-
PodAffinityNamespaceSelector
-
PreferNominatedNode
-
サブオーバーヘッド
-
UnversionedKubeletConfigMap
-
インデックス付きジョブ
-
ジョブの一時停止
13
機能のダウングレード
ベータ版 -> アルファ版
LocalStorageCapacityIsolationFSQuotaMonitoring は v1.25 でベータ版にアップグレードされましたが、アップデート後に ConfigMap が Pod ファイル システムと正常に同期されないという問題が発生したため、アルファ版にロールバックされました。
発売履歴
-
Kubernetes 1.25 が正式にリリースされ、多くの面で大きな進歩が見られます
-
Kubernetes 1.24 は成熟した Kubernetes になります
-
Kubernetes 1.23 が正式にリリースされましたが、どのような機能強化がありますか?
-
Kubernetes 1.22 はあなたの想像を覆します。スワップを有効にしたり、PSP の代替品を導入したりできます...
-
Kubernetes 1.21 衝撃リリース | PSPは廃止され、BareMetalは強化される
参考文献:
[1] KEP-2876 CRD 検証式言語:
https://github.com/kubernetes/enhancements/issues/2876
[2] レポート:
https://docs.google.com/document/d/1rMlYKOVyujboAEG2epxSYdx7eyevC7dypkD_kUlBxn4/edit
[3] 議事録:
https://youtu.be/GKBqyV8y8j0
この記事の著者
カイウェイ
「DaoCloud」シニアクラウドネイティブR&Dエンジニア
オープンソース プロジェクト Clusterpedia の創設者