Kubernetes:具有本地供应器和 StatefulSet 种类的 StorageClass

Kubernetes: StorageClass with local provisioner and StatefulSet kind

我的 pods 中有一个 'StatefulSet' 类型的 volumeClaimTemplates 部分引用了我创建的 StorageClass(SC),见下文。

SC:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

StatefulSet YAML 参考上面创建的 SC:

volumeClaimTemplates:
    - metadata:
        name: mydata
      spec:
        storageClassName: local-storage
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 2Gi

据我所知,StatefulSet 将创建节点特定的 PVC,而无需显式 PV 和 PVC 设置,我看到正在创建 PV,但 pod 状态为 'pending',并带有以下警告。

Warning FailedScheduling default-scheduler 0/4 nodes are available: 4 node(s) didn't find available persistent volumes to bind.

请注意,我没有在集群中设置默认的 StorageClass,我相信这种情况不需要,对吗? 我们是否需要为 'local' 供应商启用或配置任何东西才能在集群中工作?

谢谢

据我了解,您需要仔细阅读 this document 以配置本地卷静态供应器。

我还建议复习 the user guide,因为可能还需要其他步骤才能使其正常工作。

很难发现 PV 设置缺失的部分是 PV 设置。

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-loc-sc
spec:
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage 
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  local:
    path: "/var/lib/test"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - my-test-node-host-name

FailedScheduling 警告随着 PV、SC 和对 StatefulSet pod YAML 中 SC 的引用消失。