LoginSignup
3
1

Kubernetes 1.27: SIG Storageの変更内容

Last updated at Posted at 2023-05-10

はじめに

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

アップグレード前に絶対に確認が必要な変更点 (Urgent Upgrade Notes)

SIG-Storageに関連するものはなし

Changes by Kind

非推奨 (Deprecation)

SIG-Storageに関連するものはなし

APIの変更 (API Change)

  • seccomp profile defaulting がGAになりました。

kubeletの--seccomp-defaultフラグ又はkubeletのコンフィグのseccompDefaultをtrueに設定することで、RuntimeDefault seccomp profileがノード上のPodでデフォルト設定されます。
seccompをワークロードで有効にすると、使用しているカーネルやコンテナランタイムのバージョンなどによっては性能が悪くなることがあります。
これらの問題については、軽減するためのガイダンスがKubernetesのseccomp チュートリアルに解説されています。 (#115719, @saschagrunert)

  • volume expansionがGAとなったことで、次のfeature gatesは削除されており、--feature-gatesフラグで参照することはできません。
    ExpandCSIVolumes, ExpandInUsePersistentVolumes, ExpandPersistentVolumes (#113942, @mengjiao-liu)
  • control planeのコンポーネントで /metrics/slisが利用できるようになり、ヘルスチェックのメトリクスをスクレイピングできるようになりました。(#114997, @Richabanker)
  • SELinuxMountReadWriteOncePodのfeature gate がベータになりました。(#116425, @jsafrane)
  • StatefulSetAutoDeletePVCのfeature gateがベータになりました。(#116501, @mattcary)
  • inline PVC template 又は PVCの作成・アップデート時に、volumes: resource.claims は影響がないため、クリアされるようになりました。(#115928, @pohly)

機能 (Feature)

  • NewVolumeManagerReconstruction feature gateが追加されデフォルトで有効になり、kubelet起動時にマウントされたボリュームの更新を検出するようになりました。kubeletが起動時にスタックしたり、削除されたPodからボリュームがアンマウントされなかったりするなど問題があれば報告してください。(#115268, @jsafrane)
  • secret付きのボリュームを拡張するe2eテストが追加されました。(#115451, @zhucan)
  • kubeletの起動中のボリューム再構築のメトリクスが追加されました。 (#115965, @jsafrane)
  • ReadWriteOncePodのPVCを利用したPodのプリエンプションをschedulerを追加しました。(#114051, @chrishenzie)
  • kubeletのUserNamespacesStatelessPodsSupportのfeature gateを有効にすることで、ステートレスなPodを別のuser namespaceで実行することができるようになりました。(#116377, @giuseppe)
  • CSINodeExpandSecret機能がベータになりました。この機能は、CSIオペレーションのノード拡張の一部として、CSIドライバにsecretを渡すことを円滑にします。 (#115621, @humblec)
  • CSIMigrationvSphere のfeature gateをロックしました。(#116610, @xing-yang)
  • volume attach/detach controller(kube-controller-managerに含む)をcontextual loggingを使用するように変更しました。同じくPersistentVolumeClaim protection cotroller(kube-controller-managerに含む)もcontextual loggingを使用するように変更しました。
    同様にPersistentVolume protection controller(kube-controller-managerに含む)もcontextual loggingを使用するように変更しました。(#113584, @yangjunmyfm192085)
  • klog のパフォーマンスを向上しました。(#115277, @pohly)
  • Schedulerの volumebinding: PreFilterResultを利用し、ローカルのPersistentVolume(s)にバインドされたClaimを持つPod向けに適切なノードのみに絞り込みます。(#109877, @yibozhuang)
  • ReadWriteOncePodのfeature gate がベータになりました。(#114494, @chrishenzie)
  • CSIMigrationvSphereのfeature gateのロックを解除しました。この変更により、ユーザーは、Windows、XFS、および raw ブロックアクセスを GA でサポートする vSphere CSI ドライバのリリースまで、in-treeの vSphere ドライバを使用し続けることができます。(#116342, @msau42)

:pencil: #116610 と矛盾するリリースノートですが、v1.27.0では#116610が有効でありLockToDefault: trueとなっています。
https://github.com/kubernetes/kubernetes/blob/v1.27.0/pkg/features/kube_features.go#LL963C1-L964C1

ドキュメンテーション (Documentation)

SIG-Storageに関連するものはなし

失敗するテスト (Failing Test)

  • vSphere e2e テストにおけるパニックを修正しました。(#115863, @jsafrane)

バグまたはリグレッション (Bug or Regression)

  • CSI PersistentVolumesが63文字以上のSecrets名を許可するように修正しました。(#114776, @jsafrane)
  • host path provisionerによって作成された host path volumeのSELinux ラベルを修正しました。(#112021, @mrunalp)
  • OwnerReferencesPermissionEnforcement admission pluginが有効な場合のStatefulSetAutoDeletePVC機能を修正しました。 (#114116, @jsafrane)
  • 非推奨のアノテーションvolume.beta.kubernetes.io/storage-classが設定されている場合でも、Kubernetes が PersistentVolumeClaim にデフォルトの StorageClass を適用してしまうバグを修正しました。(#116089, @cvvz)
  • schedulerでvolume bindingが完了したかのように表示されるログを修正しました。(#116018, @TommyStarK)
  • ノード上でCSI ドライバが稼働していない場合に、CSI に移行されたボリュームが早期にdetachされる場合がある問題を修正しました。ノード上で CSI migrationが有効になっている場合、csi-driverが立ち上がってる・いないに関わらず、このボリュームをDSWに追加したままにします。(#115464, @sunnylovestiramisu)
  • fsGroupを使用する際、Secret/ConfigMap/projected volume のアップデート中に発生したファイルパーミッションの問題を修正しました。この問題は、正しいパーミッションが適用される前に、更新されたばかりのファイルを読み込むと、アプリケーションが断続的にpermission denied のエラーを起こすというレースコンディションを引き起こしていました。(#114464, @tsaarni)
  • 実際にマウントされていないディレクトリをumountしようとした時にPodが固まり終了する問題を修正しました。(#115769, @mochizuki875)
  • Kubelet: fsquotaのモニタリングが有効な時に、ConfigMapのレンダリングを停止するkubeletのバグを修正しました。(#112624, @pacoxu)
  • pending中のPodに対しPVCが欠落している場合、PVCが自動的に再作成されるようになります。(#113270, @rrangith)
  • OS, architecture, zone, region, instance typeにてベータ版のKubernetesのラベルを使いNodeAffinitiesを設定していたPersistentVolume API オブジェクトは、stableのKubernetesのラベルを使用するように修正されました。(#115391, @haoruan)
  • マウント時に拡張可能な場合、node_stage_path が設定されるようになりました。 (#115346, @gnufied)
  • tryUnmount にて mounter.withSafeNotMountedBehavior を優先するようになりました。(#114736, @andyzhangx)

その他 (Cleanup or Flake)

  • AWS kubelet credential providerを削除しました。代わりに、ecr-credential-providerというバイナリ名の外部のkubelet credential providerを使用してください。(#116329, @dims)
  • in-treeのAzure diskのpluginが削除されました。(#116301, @andyzhangx)
  • APIバージョンがstorage.k8s.io/v1beta1 のCSIStorageCapacityはサービス終了となります。(#116523, @pacoxu)
  • CSIMigrationAzureFileのfeature gate(v1.26でGAを卒業した機能)は、無条件で有効になりv1.28で削除される予定です。(#114953, @enj)
  • v1.25でGAとなり、無条件で有効になっていたfeature gatesのCSIInlineVolumeCSIMigrationDaemonSetUpdateSurgeEphemeralContainersIdentifyPodOSLocalStorageCapacityIsolationNetworkPolicyEndPortStatefulSetMinReadySecondsはv1.27で削除されました。

所感

Kubernetes v1.27は、ノードからボリュームのdetach/attachする際の処理が改善されるなどの修正はあったものの、特に大きな変更や機能追加はありませんでした。そのなかで挙げるとすれば、ReadWriteOncePodのAccessModeがベータに昇格したことでしょうか。feature gateがデフォルトでtrueとなり、利用するユーザも増えてくるかと推察します。
これまでReadWriteOnceを利用していたPVC/PVの多くはReadWriteOncePodに置き換えた方が安全性が向上しますので、是非試してみてください。
なお、ReadWriteOnceReadWriteOncePodの挙動の違いは、「Kubernetes: ReadWriteOnceとReadWriteOncePodの動作検証」に記事を公開していますので、ご興味のある方はご参照ください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1