Kubernetes 1.28:SIG存储的变更内容

はじめに

本ドキュメントでは、Kubernetes 1.28.0のCHANGELOGをベースにSIG Storageに関する機能について紹介します。
がついた文章は、CHANGELOGの公式内容ではなく筆者の補足です。

紧急升级注意事项

CephFS volume plugin (kubernetes.io/cephfs) は本リリースで非推奨となり、今後のリリースで削除される予定です。代替手段としては、CephFS CSI driver (https://github.com/ceph/ceph-csi/) を利用してください。(#118143, @humblec)

Ceph RBD ボリュームのCSIマイグレーションのサポートが非推奨になりました。Kubernetesの out-of-tree(CSIドライバ)への移行機能に依存していたユーザは、サポートが削除される前までに、移行してください (#118303, @carlory)

RBDボリュームプラグイン(kubernetes.io/rbd)はこのリリースで非推奨となり、以降のリリースで削除される予定です。代替手段としては、KubernetesクラスタでRBD CSIドライバ(https://github.com/ceph/ceph-csi/)を使用することです。([#118552](https://github.com/kubernetes/kubernetes/pull/118552), @humblec)

性质的变化

不推荐

    Kube-controller-managerは–volume-host-cidr-denylistと–volume-host-allow-local-loopbackフラグを非推奨としました。(#118128, @carlory)

API的改变

PersistentVolumes に新しいLastPhaseTransitionTime フィールドが追加され、ボリュームが最後にフェーズを遷移したタイムスタンプが保持されるようになりました。(#116469, @RomanBednar)

pvc.StatusからresizeStatus列挙型を削除し、AllocatedResourceStatusに置き換えました。(#116335,@gnufied)

特点

    RetroactiveDefaultStorageClass 機能が安定版となりデフォルトで有効になりました。(#118102, @RomanBednar)

RetroactiveDefaultStorageClassは、PVCにてstorageClassNameを省略した際に利用されるデフォルトのStorageClassに関する機能です。
従来は、デフォルトのStorageClassを事前に設定し、その後にPVCを作成する必要がありました。つまり、後からデフォルトのStorageClassを設定しても、PVCはPendingのままでした。
この機能により、PVC作成時にstorageClassNameが未指定であっても、後からStorageClassのデフォルトを設定することでPVが作成されPVCとバインドされるようになりました。
なお、デフォルトのStorageClassの指定は、アノテーションにstorageclass.kubernetes.io/is-default-class: true を指定することで設定できます。

    • Added reason to metric attachdetach_controller_forced_detaches in the attach detach controller. (#119185, @xing-yang) [sig/storage,sig/apps]

 

    • attach detach controller のメトリクスattachdetach_controller_forced_detachesに理由を追加しました。(#119185, @xing-yang)

 

    non-graceful ノードシャットダウンがGAになりました。 (#118228, @carlory)

由于非优雅的节点关机已经进入GA状态,因此现有的功能可以防止节点非正常关机导致节点无法启动并无法分离卷的情况。在特定的块存储中,为了防止多个节点/Pod同时写入导致卷损坏,会限制多重附加。因此,如果卷没有从旧节点上分离,就可能导致无法在新节点上持续附加。在非优雅的节点关机情况下,通过给节点添加taint node.kubernetes.io/out-of-service=nodeshutdown:NoExecute或node.kubernetes.io/out-of-service=nodeshutdown:NoSchedule,可以强制分离并在新节点上附加。

文档资料

    ボリューム作成の際の待機時のエラーメッセージをより明確にしました。 (#118262, @torredil)

考试不及格 (Failing Test)

    • Azure Disk e2e がノードから利用できる場合、新しいトポロジーラベルを使用できるように許可しました。(#117216, @gnufied)

 

    サイドカーのリリースのためのAfterEach volumeperf.goテストのnilポインタを修正しました。 (#117368, @sunnylovestiramisu)

错误或回归

    • ノードがダウンして復旧に時間がかかると、追い出されたPodのマウントポイントを正常にクリーンアップできない問題を修正しました(#111933)。 一方、Kubeletは2秒ごとに、 Orphaned pod “xxx” found, but error not a directory occurred when trying to remove the volumes dir というログを出力します。(#105536)(#116134, @cvvz)

 

    • PodとPVCのオブジェクトが削除された後、ボリュームがデタッチできない問題を修正しました。(#116138, @cvvz)

 

    • rmコマンドでARG_MAX制限に引っかかり、ディレクトリ内のファイル数が多すぎるボリュームをpv recyclerがスクラビングできなかったバグを修正しました。(#117283, @defo89)

 

    • NewVolumeManagerReconstruction 機能が有効で、/var/lib/kubelet/pods に CSI ボリュームが存在する場合に、kubelet のスタートアップがスタックする問題を修正しました。(#117804, @jsafrane)

 

    • emptyDirのメトリクス storage_operation_duration_seconds_count に報告されるエラーの数は、以前はprojected volumeが作成されるたびに1つエラーが報告されていましたが、大幅に減少しました。 (#117022, @mpatlasov)

NewVolumeManagerReconstructionとSELinuxMountReadWriteOncePodのfeature gatesをデフォルトで無効に戻し、kubelet/ノード再起動時のボリューム再構築のリグレッションを解決しました。(#117751, @liggitt)
pvまたはpvcでvolume.beta.kubernetes.io/storage-classアノテーションが使用されている場合に警告を表示するようになりました。(#117036, @haoruan)

其他(擦净或剥皮)

    • GAされたfeature gate DelegateFSGroupToCSIDriver を削除しました。(#117655, @carlory)

 

    • 非推奨であった azureFile の in-treeのストレージプラグインを削除しました。(#118236, @andyzhangx)

 

    • feature gate CSIStorageCapacityは削除されました。–feature-gatesフラグの参照を行わないでください。(#118018, @humblec)

 

    • feature gate CSIMigrationGCEはGAとなり、デフォルトで有効になっていた機能はv1.25で削除され、gcepdパッケージ全体も削除されました。(#117055, @cyclinder)

 

    feature gate DisableAcceleratorUsageMetricsとPodSecurityはGAとなり、デフォルトで有効となっていた機能はv1.28で削除されました。(#114068, @cyclinder)

感觉

Kubernetes v1.28のSIG Stoargeでは RetroactiveDefaultStorageClassとnon-graceful ノードシャットダウンがGAとなりました。
1つ目のRetroactiveDefaultStorageClassは、PVCにてstorageClassNameを省略した際に利用されるデフォルトのStorageClassに関する機能です。
Helmなどでセットアップされるステートフルアプリケーションでは、ユーザがどのStorageClassを利用するのか不明なため、storageClassNameが指定されていないことが多くあります。
そのため、values.yamlなどでstorageClassNameを指定してあげる必要がありました。
この指定を忘れると、RetroactiveDefaultStorageClassが有効でないKubernetes(v1.27以前)の場合、ステートフルアプリケーションを一度削除した後、再度セットアップする必要がありました(PVCを一度削除する必要がありました)。
今回Kubernetes v1.28でRetroactiveDefaultStorageClassが有効になったため、このPVCの削除が不要となり、後からStorageClassのデフォルト設定を行えば、PVが作成されPVCとバインドされるようになります。

第二个非优雅的节点关闭是一个从异常节点中强制分离卷的功能。
在过去,从异常节点中分离卷是一项非常繁琐的工作,取决于节点状态,可能需要登录节点并强制分离。
通过Kubernetes v1.28的非优雅节点关闭,现在可以稍微轻松地进行这种恢复工作了。

Kubernetes v1.28 SIG Storage相关并没有新增重大功能,但类似上述提到的两个功能确实提高了用户友好性和可维护性。
虽然不是很显眼的功能,但是在需要的时候它们非常有用,希望在紧急情况下能够记起这些功能。

广告
将在 10 秒后关闭
bannerAds