Kubernetes Pod 警告:1 个节点发生卷节点关联冲突

新手上路,请多包涵

我尝试设置 Kubernetes 集群。我已经设置并运行了 Persistent Volume、Persistent Volume Claim 和 Storage 类,但是当我想从部署中创建 pod 时,pod 已创建但它挂在 Pending 状态。描述后,我只收到此警告“1 个节点有卷节点关联冲突。”有人可以告诉我我的卷配置中缺少什么吗?

 apiVersion: v1
kind: PersistentVolume
metadata:
  creationTimestamp: null
  labels:
    io.kompose.service: mariadb-pv0
  name: mariadb-pv0
spec:
  volumeMode: Filesystem
  storageClassName: local-storage
  local:
    path: "/home/gtcontainer/applications/data/db/mariadb"
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 2Gi
  claimRef:
    namespace: default
    name: mariadb-claim0
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/cvl-gtv-42.corp.globaltelemetrics.eu
            operator: In
            values:
            - master

status: {}

原文由 Krzysztof 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 496
1 个回答

当持久卷声称 Pod 正在使用的被调度在不同的区域而不是一个区域时,会发生错误“卷节点关联冲突”,因此实际的 Pod 无法被调度,因为它无法连接到卷另一个区域。要检查这一点,您可以查看所有持久卷的详细信息。要检查这一点,首先获取您的 PVC:

 $ kubectl get pvc -n <namespace>

然后获取持久卷的详细信息(不是卷声明)

 $  kubectl get pv

找到与您的 PVC 对应的 PV 并描述它们

$  kubectl describe pv <pv1> <pv2>

您可以检查每个 PV 的 Source.VolumeID,它们很可能是不同的可用区,因此您的 pod 会给出关联错误。要解决此问题,请为单个区域创建一个存储类并在您的 PVC 中使用该存储类。

 kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: region1storageclass
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  encrypted: "true" # if encryption required
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
  - key: failure-domain.beta.kubernetes.io/zone
    values:
    - eu-west-2b # this is the availability zone, will depend on your cloud provider
    # multi-az can be added, but that defeats the purpose in our scenario

原文由 Sownak Roy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题