首页 > 其他分享 >Kubernetes中PV&PVC访问模式

Kubernetes中PV&PVC访问模式

时间:2023-02-08 23:46:16浏览次数:41  
标签:PV Kubernetes 模式 访问 PVC 挂载 Pod 节点

问题

为什么PV的accessmode设置的访问模式是ReadWriteOnce,但是其他节点还是可以读写。

为什么PV的accessmode设置的模式为ReadOnlyMany,其他节点还是可以读写。

前言

这是明显对 K8S 存储卷 (PV) 的访问模式 (Access Modes) 有误解才会提出的问题。这个误解非常普遍。

刚使用 K8S 存储卷 (PV) 的时候,也总是将其访问模式 (Access Modes) 与操作系统的权限类同,即使用方

是否有权限去读或写。然而实际上不是这样的,Pod 对存储卷的是否可写也不完全由访问模式来决定。

PV的访问模式

ReadWriteOnce(RWO):卷只能被一个节点以读写方式挂载。ReadWriteOnce访问模式也允许运行在同一节点上的多个Pod访问卷。
ReadOnlyMany(ROX):卷可以被多个节点只读方式挂载
ReadWriteMany(RWX):卷可以被多个节点以读写方式挂载
ReadWriteOncePod(RWOP):卷可以被单个Pod以读写方式挂载。如果你想确保整个集群中只有一个Pod可以读取或写入该PVC
请使用 ReadWriteOncePod 访问模式。## 大多时候RWOP并不能使用。

对于我当前来讲,由于我设置的存储为NFS并且也远程挂载了两个node节点,并且设置的是都可以进行读写,所以现在其实只有ReadWriteMany

这一种访问模式生效。

怎么限制Pod对PV的只读

可通过 Pod.Spec 中 Volume 中的 readOnly 字段来决定是 ReadWrite 还是 ReadOnly 来挂载,例子:

volumes:
  - name: pvc 
    persistentVolumeClaim:
      claimName: claim
      readOnly: true

或者在

    volumeMounts:
    - name: pvc 
      mountPath: "/data/nfs"
      readOnly: true
  volumes:
  - name: pvc 
    persistentVolumeClaim:
      claimName: pvc-01
      readOnly: false

## 当前的accessmode访问模式并不参与PV的使用,即使PV的访问模式设置的是readonlymany,但实际也还是readwrite模式,想要实现只读,需要用户实际使用中设置 ReadOnly 。

如果想实现node的只读只能修改底层的配置,也就是直接修改存储的源头(你设置的NFS/CEPH或者其他的服务器给其他node给拒绝掉)

当然底层存储实现,一般会做安全保证。不支持多节点写的情况下,底层会拒绝掉多节点挂载(也就是NFS服务器把rw改为ro)。

 

标签:PV,Kubernetes,模式,访问,PVC,挂载,Pod,节点
From: https://www.cnblogs.com/yangsh123/p/17103732.html

相关文章