statefulset 副本和 pvc 声明

问题描述

我需要将 statefulsets 与副本一起使用,我们需要在我们的 stateful set 中使用在工作节点之间共享的块卷。当它们在多个工作节点上运行时,我没有找到在 statefulsets 副本中使用它们的方法。以下是步骤:

创建基于区块体积的 PV 和 PVC:

---
kind: PersistentVolume
apiVersion: v1
Metadata:
  name: block-myapp-disk1-pv-vol1
  labels:
    myapp_vol: "block-myapp-pv-vol1"
  namespace: rac
spec:
  volumeMode: Block
  capacity:
    storage: 50Gi
  local:
    path: /dev/sdd
  accessModes:
    - ReadWriteMany
  nodeAffinity:
    required:
      nodeselectorTerms:
        - matchExpressions:
            - key: "app"
              operator: In
              values:
                - myapp01
---
apiVersion: v1
kind: PersistentVolumeClaim
Metadata:
  name: block-myapp-pvc-vol1
  namespace: rac
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Block
  resources:
    requests:
      storage: 50Gi
  selector:
     matchLabels:
       myapp_vol: "block-myapp-pv-vol1"

创建Statefulset,以下是代码片段:

apiVersion: apps/v1
kind: StatefulSet
Metadata:
  name: prodapp
  namespace: colds
spec:
  selector:
    matchLabels:
      apptype: prodapp
  serviceName: prodapp
  replicas: 2
  template:
    Metadata:
      labels:
        apptype: prodapp
    spec:
     affinity:
       podAntiAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
         - labelSelector:
             matchExpressions:
             - key:  apptype
               operator: In
               values:
               - prodapp
           topologyKey: "kubernetes.io/hostname"
     volumes:
       - name: myappvol1
         persistentVolumeClaim:
          claimName: block-myapp-pvc-vol1
     containers:
       - name: bprodapp1-dep
         image: prodapp:latest
         imagePullPolicy: IfNotPresent
         securityContext:
          privileged: false
         command: [/usr/sbin/init]
         env:
          - name: container
           value: "true"
         volumeDevices:
          - name: myappvol1
            devicePath: /dev/myapp-disk1

我无法在所有副本上使用 myappvol1

 kubectl describe pvc block-myapp-pvc-vol1 -n colds
Name:          block-myapp-pvc-vol1
Namespace:     rac
StorageClass:
Status:        Pending
Volume:
Labels:        <none>
Annotations:   <none>
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode:    Block
Used By:       prodapp-1
Events:
  Type    Reason         Age                              From                         Message
  ----    ------         ----                             ----                         -------
  normal  FailedBinding  <invalid> (x182 over <invalid>)  persistentvolume-controller  no persistent volumes available for this claim and no storage class is set

有没有办法可以在所有 Pod 上使用相同的块卷。就我而言,设备 /dev/sdd 向所有标记app:myapp01 的工作节点公开。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)