pv和pvc存储卷

存储卷:

emptyDir容器内部,随着pod销毁,emptyDir也会消失,不能做数据持久化

hostPath:持久化存储数据,可以和节点上目录做挂载。pod被销毁了数据还在

NFS:一台机器,提供pod内容器所有的挂载点

pv和pvc:

pvc就是pod发起得挂载得请求

pv:持久化存储得目录,ReadWriteMany   ReadOnlyMany   ReadWriteOnce

NFS支持三种方式

hostPath只支持ReadWriteOnce

ISCSI不支持ReadWriteMany

pv的回收策略:Retain  默认 released需要人工设置,调整回Available

              Recycle  回收,自动调回Available

              Delete  删除

静态pv和pvc的用法:

运维负责pv:创建好持久化存储卷,声明好读写和挂载类型,以及可以提供的存储空间

开发负责pvc:要和开发沟通好你期望的读写和挂载类型以及存储空间

当我发布pvc之后,可以生成pv,还可以在共享服务器上直接生成挂载目录

pvc直接绑定和使用pv

动态pv需要两个组件:

1、卷插件Provisioner(存储分配器)

K8S本身支持的动态pv创建不包括NFS,需要声明和安装一个外部插件Provisioner(存储分配器)

Provisioner可以动态创建pv,然后根据pvc的请求自动绑定和使用

2、StorageClass

定义pv的属性,包括存储类型、大小、回收策略等等

NFS实现动态pv

NFS支持的方式NFS-client,先搞定Provisioner,来适配NFS-client

nfs-client-provisioner卷插件

serviceAccount:

NFS PRovisioner: 是一个插件,没有权限是无法再集群当中获取k8s的消息,插件要有权限能够监听apiserver,获取get,list获取集群的列表资源)create delete

rbac: Role-based ACCESS CONTROL

定义角色在集群当中可以使用的权限

角色 权限都已经创建完毕

部署插件:

NFs -privisioner。deplpyment来创建插件 pod

1.20之后有一个新的机制:selfLink

selfLink:API的资源对象之一,表示资源对象在集群当中自身的一个连接,selef-link是一个唯一标识符号,可以用于识别K8S集群当中每个资源的对象

self lonk的值是一个URL,指向该资源的对象的K8S  api的路径

更好的实现资源对象的查找和引用

feature-gates=RemoveSelfLink=false

feature-gates: 在不破坏现有规则以及功能基础上引入新功能或者修改现有功能的机制。

禁用不影响之前的规则。

部署nfs-provisioner的插件:

nfs的provisioner的客户端已pod的方式运行在集当中,监听k8s集联当中pv的请求。动态的创建于NFS服务器相关的pv

容器里使用的配置,在provisioner当中定义好环境变量,传给容器。storageClass的名称、NFS服务器的地址、NFS的目录

动态pv的默认策略是删除。delete

总结: 动态pv

provisioner插件------支持nfs 创建pv目录

stroageclass: 定义pv的属性动态

pv的默认策略是删除

动态策略没有回收

动态pv删除pvc之后的状态,released

1、创建账号,给卷插件能狗在集群内部通信,获取资源,监听事件,创建,删除,更新pv

2、创建卷插件pod,卷插件的pod创建pv

3、storageclass: 给pv赋予属性 (pvc被删除之后pv的状态,以及回收策略)

4、创建pvc-------完成

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐