kubernetes - 是否可以有 1 个 pod 附加不同命名空间的多个 PVC
问题描述
例子:
命名空间:一个
PVC: a-pvc
Pod: main-pod-to-work-with
坐骑:
a-pvc; name: a-pvc-mount; path: /pvc/a-files
b-pvc; name: b-pvc-mount; path: /pvc/b-files
c-pvc; name: c-pvc-mount; path: /pvc/c-files
命名空间:b
PVC: b-pvc
命名空间:c
PVC: c-pvc
解决方案
根据Persistent Volume文档:
PersistentVolume (PV) 是集群中的一块存储,由管理员配置或使用存储类动态配置。
PersistentVolumeClaim (PVC) 是用户的存储请求。
在文档中您拥有Binding部分的位置较低,您可以在其中找到信息:
一旦绑定,PersistentVolumeClaim 绑定是独占的,无论它们是如何绑定的。PVC 到 PV 的绑定是一对一的映射,使用 ClaimRef,它是 PersistentVolume 和 PersistentVolumeClaim 之间的双向绑定。
Pod
并且PVC
是namespaced
资源。这意味着如果你有pod
in default namespace
,pvc
也必须在同一个namespace
。
$ kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
...
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
...
如果您要pod
在default
namespace中创建,则将无法在 other 中查看资源namespace
。这就是为什么您需要namespace
在一些推荐中指定的原因。如果您不指定它,您的输出将来自default
命名空间。
$ kubectl get po
No resources found in default namespace.
$ kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
event-exporter-gke-564fb97f9-wtx9w 2/2 Running 0 9m2s
fluentbit-gke-8tcm6 2/2 Running 0 8m48s
fluentbit-gke-cdm2w 2/2 Running 0 8m51s
测试
根据Configure a Pod to Use a PersistentVolume for Storage文档,您有创建步骤PV
,PVC
并且Pods
。
$ kubectl get po
NAME READY STATUS RESTARTS AGE
task-pv-pod 1/1 Running 0 5m20s
task-pv-pod-2 1/1 Running 0 4m43s
task-pv-pod-3 1/1 Running 0 2m40s
很少有 pod 可以使用相同的PVC
. 但所有pods
和PVC
都在同一个namespace
。作为资源pod
,pvc
不可能pod
从一个命名空间使用另一个命名空间的资源namespace
。
结论
Kubernetesnamespaced
资源仅对相同namespace
(如pod
or pvc
)中的资源可见。在这种情况下,您已指定namespace
使用--namespace <namespace>
or -n <namespace>
。还有一些集群范围的资源PersistentVolume
,例如不需要指定名称,因为它们在整个集群中可见。要获取资源列表以检查它是否已命名,您可以使用 command $ kubectl api-resources
。
在一个特定的情况namespace
下,一个PVC
可以由几个 pod 使用。然而,一个人与另一个pod
人的少是不可能的。PVC
namespaces
如果这没有回答您的问题,请详细说明。
推荐阅读
- r - 权重不适用于 R 的“aov”函数
- python - discord.py :在频道上发送消息 2-3 次
- javascript - 如何在 vuetify 对话框中添加谷歌自动完成输入
- sql - Creating a Separate Column for Prior Week Values (PostgreSQL)
- javascript - 如何从成员那里获取消息然后将其发送到频道
- sql - 选择表中的最新记录
- asp.net-core - 如何将包含excel文件的表单数据发送到asp.net core中的控制器
- python - 基于多个条件和多个值分配变量
- ios - 如何在 M1 MacBook Pro 上的 Xcode 项目中下载 pod
- java - AES的计数器模式的计数器是如何递增的?