Kubernetes v1.26 配置默认存储 StorageClass

释放双眼,带上耳机,听听看~!
🤖 由 ChatGPT 生成的文章摘要

Kubernetes v1.25 引入了一个 Alpha 特性来更改默认 StorageClass 被分配到 PersistentVolumeClaim (PVC) 的方式。 启用此特性后,你不再需要先创建默认 StorageClass,再创建 PVC 来分配类。 此外,任何未分配 StorageClass 的 PVC 都可以在后续被更新。此特性在 Kubernetes v1.26 中已进阶至 Beta。

更改默认 StorageClass

启用这个 Alpha 特性后,管理员想要更改默认 StorageClass 时会有两个选项:

  • 在移除与 PVC 关联的旧 StorageClass 之前,创建一个新的 StorageClass 作为默认值。 这将导致在短时间内出现两个默认值。此时,如果用户要创建一个 PersistentVolumeClaim, 并将 storageClassName 设置为 null(指代默认 StorageClass), 则最新的默认 StorageClass 将被选中并指定给这个 PVC。
  • 先移除旧的默认值再创建一个新的默认 StorageClass。这将导致短时间内没有默认值。 接下来如果用户创建一个 PersistentVolumeClaim,并将 storageClassName 设置为 null (指代默认 StorageClass),则 PVC 将永远处于 Pending 状态。 一旦默认 StorageClass 可用,用户就不得不通过删除并重新创建 PVC 来修复这个问题。

如何启用

需要在kube-controller-managerkube-apiserver 中使用 --feature-gates 配置启用

--feature-gates="...,RetroactiveDefaultStorageClass=true"

演示

创建一个PvC文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-1
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

在没有默认StorageClass存储时,PVC文件为Pending状态

$kubectl get pvc

NAME      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-1     Pending

我们需要将本地有的StorageClass 设置为默认存储

#查看storageClass
[root@k8s-master-01 ~]# kubectl get sc
NAME              PROVISIONER           RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
csi-cephfs-sc     cephfs.csi.ceph.com   Delete          Immediate              true                   2d23h
csi-rbd-sc        rbd.csi.ceph.com      Delete          Immediate              true                   2d23h
local    openebs.io/local      Delete          WaitForFirstConsumer   false                  8d

#变更为默认存储
kubectl patch local -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

#local为你的storageclass名称

实际上就是sc添加了下面的一行

    storageclass.kubernetes.io/is-default-class: "true"

Kubernetes v1.26 配置默认存储 StorageClass

确认 PersistentVolumeClaims 现在已被正确制备,并且已使用新的默认 StorageClass

$ kubectl get pvc

NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
pvc-1     Bound    pvc-06a964ca-f997-4780-8627-b5c3bf5a87d8   1Gi        RWO            local   87m

查看默认StorageClass已经被修改

$ kubectl get storageclass

NAME             PROVISIONER               AGE
local         kubernetes.io/gce-pd      1d

官方文档:
https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/change-default-storage-class/
https://kubernetes.io/zh-cn/blog/2023/01/05/retroactive-default-storage-class/

给TA打赏
共{{data.count}}人
人已打赏
Kubernetes

快速构建Kubesphere 3.0并设置Kubesphere 多集群联邦

2023-4-11 21:12:00

Kubernetes报错锦集

Kubernetes 删除namespace Terminating解决脚本

2023-5-23 10:50:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索