gpt4 book ai didi

kubernetes - 是否可以在 kubernetes 中拥有与两个卷相同的 PVC?

转载 作者:行者123 更新时间:2023-12-03 10:03:53 26 4
gpt4 key购买 nike

我的 pod 声明了两个不同的卷。

我使用了一些定义模板,并且在某些情况下取决于环境,我想对两卷使用相同的声明。

这导致错误

    Unable to mount volumes for pod "task-pv-pod_<...>": timeout expired waiting for volumes to attach/mount for pod "<...>"/"task-pv-pod". list of unattached/unmounted volumes=[task-pv-storage1]
  • 它适用于两种不同的声明。
  • 可以在多个 pod 中使用相同的声明。

  • 这是一个简化的 pod 定义:
    kind: Pod
    apiVersion: v1
    metadata:
    name: task-pv-pod
    spec:
    volumes:
    - name: task-pv-storage1
    persistentVolumeClaim:
    claimName: task-pv-claim
    - name: task-pv-storage2
    persistentVolumeClaim:
    claimName: task-pv-claim
    containers:
    - name: task-pv-container
    image: nginx
    ports:
    - containerPort: 80
    name: "http-server"
    volumeMounts:
    - mountPath: "/usr/share/nginx/html"
    name: task-pv-storage1
    - mountPath: "/usr/share/nginx/something-else"
    name: task-pv-storage2

    那么为什么它不起作用呢?

    最佳答案

    要回答您的问题“是否可以在多个 Pod 中使用相同的声明?”,让我们来看看不同的声明附加访问模式:

    当您使用默认设置创建 PVC 时,您正在创建一个持久性卷和一个位于其顶部的声明,使用附加访问模式 ReadWriteOnce .

    ReadWriteOnce – the volume can be mounted as read-write by a single node



    所以这个声明只能挂载在同一个节点上的 pod 上。有一种解决方法可以将此卷安装到多个 pod 上。一种是将所有 pod 安排在同一个节点上,这在技术上违背了使用容器编排的目的。这可以通过 assigning pods to nodes 实现.阅读链接的文档了解详细信息。

    另一种方法是使用磁盘持久卷/NFS。根据您使用的云提供商,您可以使用不同的文件系统供应商。
  • AWS:EFS Provisioner - helm
  • GKE:GCE NFS Disk
  • 其他云提供商:NFS Server Provisioner

  • 通过这种方式,您可以将访问模式更改为 ReadWriteMany :

    ReadWriteMany – the volume can be mounted as read-write by many nodes



    使用此访问策略,您可以将卷挂载到集群中的多个 pod 上,而不管它们在哪个节点上运行。

    关于kubernetes - 是否可以在 kubernetes 中拥有与两个卷相同的 PVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55957193/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com