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的状态,以及回收策略)文章来源:https://www.toymoban.com/news/detail-818047.html
4、创建pvc-------完成文章来源地址https://www.toymoban.com/news/detail-818047.html
到了这里,关于K8S动态PV的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!