Kubernetes v1.26 が正式リリース、安定性が大幅に向上

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/v1alpha1kind: ValidatingAdmissionPolicymetadata:  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 yamlapiVersion: authentication.k8s.io/v1alpha1kind: SelfSubjectReviewstatus:  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: v1kind: Podspec:  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:3options 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: v1kind: PersistentVolumeClaimspec:  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/v1kind: StatefulSetspec:  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 gaugekubernetes_healthcheck{name="etcd",type="healthz"} 1kubernetes_healthcheck{name="etcd",type="readyz"} 1
  • カウンタ: 各ヘルスチェックで検出された状態の累積数

# HELP kubernetes_healthchecks_total [ALPHA] This metric records the results of all healthcheck.# TYPE kubernetes_healthchecks_total counterkubernetes_healthchecks_total{name="etcd",status="success",type="healthz"} 15kubernetes_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=serverpod/foo labeled

その後

$ kubectl label pod foo bar=baz --dry-run=serverpod/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 ファイル システムと正常に同期されないという問題が発生したため、アルファ版にロールバックされました。

発売履歴

参考文献:

[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 の創設者

おすすめ

転載: blog.csdn.net/DaoCloud_daoke/article/details/128497129