0

我正在尝试使用 storageOS 设置一个高可用性集群。从字面上看,我想在节点之间复制卷,如果我的状态应用程序中的节点应该在具有最后状态的新节点上启动。

我在裸机(虚拟盒)上有 1 个主节点和 2 个从节点。我根据这些文档成功安装了带有 helm 的 storageos:https ://docs.storageos.com/docs/platforms/kubernetes/install/1.13

我可以在浏览器上访问 storageos 的 web gui,一切看起来都很好。我也成功创建了 storageclass。

我尝试创建一个持久卷声明并绑定到一个 pod。在 pvc 和 pod 创建后,pv 成功生成并绑定到声明。我从浏览器检查它,节点上有 1 个副本和 1 个主持久卷。没有问题直到这里。

当我关闭 Pod 的节点并在另一个节点上重新启动 Pod 时,Pod 卡在创建状态的容器上。Describe 命令给出了结果:

警告 FailedAttachVolume 23s attachdetach-controller 卷“pvc-0b2a1dbf-62e4-11e9-8b86-0800278a3f7b”的多附加错误卷已被 pod(s) nginx、nginx-6779c9f48b-g2825 使用

我遵循本指南,并且 pod 必须在具有相同状态的另一个节点上启动: https ://docs.storageos.com/docs/platforms/kubernetes/firstvolume/

我在节点“/var/lib/storageos/volumes”和 pod 上检查了这个目录,我可以看到一个节点中的卷(具有持久卷),但我在另一个节点上看不到任何卷。

我尝试过:
更改 pv 回收政策
对 openebs 进行一点尝试,但同样的问题
我尝试此故障排除结果是相同的:https ://docs.storageos.com/docs/platforms/kubernetes/troubleshoot/volumes#pod-in-pending-because -of-mount-error(我只为 docker 尝试我不知道如何在 kubernetes 上启用 MountPropagation)
我尝试等待 15-20 分钟但错误状态仍然相同
我尝试使用 1 个主节点和 3 个从节点结果相同

秘密和集群

apiVersion: v1
kind: Secret
metadata:
  name: "storageos-api"
  namespace: "default"
  labels:
    app: "storageos"
type: "kubernetes.io/storageos"
data:
  # echo -n '<secret>' | base64
  apiUsername: c3RvcmFnZW9z
  apiPassword: c3RvcmFnZW9z
---
apiVersion: "storageos.com/v1"
kind: "StorageOSCluster"
metadata:
  name: "example-storageos"
  namespace: "default"
spec:
  secretRefName: "storageos-api"
  secretRefNamespace: "default"
---
PVC and Pod
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mpvc
  labels:
    storageos.com/replicas: "1"
  annotations:
    volume.beta.kubernetes.io/storage-class: fast
spec:
  accessModes: [ReadWriteOnce]
  resources:
   requests:
     storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx
      imagePullPolicy: IfNotPresent
      securityContext:
        privileged: true
      volumeMounts:
        - mountPath: /usr/share/nginx/html/
          name: v1
  volumes:
    - name: v1
      persistentVolumeClaim:
        claimName: mpvc

The pod must start on the other node when a node fails but cannot bind the same volume on new node
4

0 回答 0