docker - Kubernetes Pod 警告 : 1 node(s) had volume node affinity conflict

标签 docker kubernetes persistent-volumes

我尝试设置 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: {}

最佳答案

当持久卷声称正在使用的 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

关于docker - Kubernetes Pod 警告 : 1 node(s) had volume node affinity conflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51946393/

相关文章:

kubernetes - Helm 升级过程中无法重新创建部署,因为 PersistentVolumeClaim 和 Service 无法替换

mysql - docker 组成 : mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)

docker - Docker中的保存和导出有什么区别?

Kubernetes - 我可以在没有任何进程的情况下使用容器启动 pod 吗?

kubernetes - 什么是 super 库比?

go - K8s运算符(operator)监听具体配置图

Kubernetes 持久卷访问模式 : ReadWriteOnce vs ReadOnlyMany vs ReadWriteMany

kubernetes - 指定动态创建的EBS卷名

docker - 如何使用 docker-machine 和 VirtualBox 创建基于 ubuntu 的 docker 主机?

centos - CentOS 上的 Docker 在运行时报告 "unable to mount sys as readonly"