首页 > 解决方案 > Kubernetes:volume.beta.kubernetes.io/storage-class 或 spec.StorageClassName

问题描述

我们正在使用持久性卷声明请求 Kubernetes 上的持久性。

目前,我们正在storage class使用volume.beta.kubernetes.io/storage-class注释进行设置:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: vault-file-backend-volumeclaim
  annotations:
    volume.beta.kubernetes.io/storage-class: heketi
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

然而,我们已经意识到存在一个spec.storageClassName领域,我们不知道它是为了什么......

我们可以通过设置删除volume.beta.kubernetes.io/storage-class注释spec.storageClassName吗?

标签: kubernetes

解决方案


是的,您应该选择storageClassName,因为注释将在未来被弃用,如kubernetes.io中的状态:

过去,使用注解volume.beta.kubernetes.io/storage-class 代替 storageClassName 属性。此注解仍在工作,但将在未来的 Kubernetes 版本中完全弃用。

因此,您的 YML 文件将如下所示:

storageclass.yml

apiVersion: storage.k8s.io/v1beta1  
kind: StorageClass  
metadata:  
  name: heketi
provisioner: kubernetes.io/glusterfs  
parameters:  
  resturl: [...]
  restuser: [...]
  restuserkey: [...]

pv.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: vault-file-backend-volumeclaim
spec:
  storageClassName: heketi
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

推荐阅读