Don*_*ler 16 openshift kubernetes
这可能是一个愚蠢的问题,但我没有找到很多在线,并希望澄清这一点.
给定两个部署A和B,两个都有不同的容器映像:
我可以确认上述实际上是可行的吗?即两个不同的吊舱使用相同的PVC连接到相同的卷.所以他们都是从同一卷读.
希望有道理......
scr*_*ley 21
TL; DR您可以在共享卷(nfs,gluster等)的同一项目/命名空间内共享PV和PVC,您也可以从多个项目/命名空间访问您的共享卷,但它需要项目专用的PV和PVC ,因为PV绑定到单个项目/命名空间,而PVC是项目/命名空间范围.
下面我试图说明当前行为以及PV和PVC在OpenShift中的作用范围.这些是使用NFS作为持久存储层的简单示例.
此时的accessModes只是标签,它们在控制对PV的访问方面没有真正的功能.以下是一些示例来说明这一点
PV是全局的,因为它可以被任何项目/命名空间看到/访问,但是一旦它绑定到项目,它就只能被来自同一项目/命名空间的容器访问.
PVC是特定于项目/命名空间的(因此,如果您有多个项目,则需要为每个项目安装新的PV和PVC以连接到共享NFS卷 - 无法重用第一个项目中的PV)
示例1:
我在"默认"项目/命名空间中运行了2个不同的pod,它们都访问相同的PV和NFS导出的共享.安装和运行都很好.
[root@k8dev nfs_error]# oc get pv
NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
pv-nfs <none> 1Gi RWO Bound default/nfs-claim 3m
[root@k8dev nfs_error]# oc get pods <--- running from DEFAULT project, no issues connecting to PV
NAME READY STATUS RESTARTS AGE
nfs-bb-pod2-pvc 1/1 Running 0 11m
nfs-bb-pod3-pvc 1/1 Running 0 10m
Run Code Online (Sandbox Code Playgroud)
示例2:
我在"默认"项目/命名空间中运行了2个不同的pod,并尝试使用相同的PV创建另一个pod,但是从一个名为testprojectaccess的新项目访问相同的NFS导出.来自new的第三个pod testproject将无法绑定到PV,因为它已经被default项目绑定.
[root@k8dev nfs_error]# oc get pv
NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
pv-nfs <none> 1Gi RWO Bound default/nfs-claim 3m
[root@k8dev nfs_error]# oc get pods <--- running from DEFAULT project, no issues connecting to PV
NAME READY STATUS RESTARTS AGE
nfs-bb-pod2-pvc 1/1 Running 0 11m
nfs-bb-pod3-pvc 1/1 Running 0 10m
Run Code Online (Sandbox Code Playgroud)
**从另一个项目(testproject)创建针对现有PV的新索赔,PVC将失败
[root@k8dev nfs_error]# oc get pvc
NAME LABELS STATUS VOLUME CAPACITY ACCESSMODES AGE
nfs-claim <none> Pending 2s
Run Code Online (Sandbox Code Playgroud)
**nfs-claim永远不会绑定到pv-nfs PV,因为它无法从它的当前项目范围中看到它
例3:
我有两个不同的pod在"默认"项目中运行,然后创建另一个PV和PVC和Pod testproject.两个项目都能够访问相同的NFS导出共享,但我需要在每个项目中使用PV和PVC.
[root@k8dev nfs_error]# oc get pv
NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE
pv-nfs <none> 1Gi RWX Bound default/nfs-claim 14m
pv-nfs2 <none> 1Gi RWX Bound testproject/nfs-claim2 9m
[root@k8dev nfs_error]# oc get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default nfs-bb-pod2-pvc 1/1 Running 0 11m
default nfs-bb-pod3-pvc 1/1 Running 0 11m
testproject nfs-bb-pod4-pvc 1/1 Running 0 15s
Run Code Online (Sandbox Code Playgroud)
**注意,我现在有三个pod在两个项目中运行到同一个NFS共享卷,但我需要两个PV,因为它们绑定到一个项目,2个PVC,每个项目一个和我正在尝试的NFS PV访问
例4:
如果我绕过PV和PVC,我可以直接从任何项目使用nfs插件连接到共享NFS卷
volumes:
- name: nfsvol
nfs:
path: /opt/data5
server: nfs1.rhs
Run Code Online (Sandbox Code Playgroud)
现在,卷安全性是另一层,使用补充组(用于共享存储,即nfs,gluster等),管理员和开发人员应该能够进一步管理和控制对共享NFS系统的访问.
希望有所帮助
| 归档时间: |
|
| 查看次数: |
14474 次 |
| 最近记录: |