作用:应用之间 pod之间 容器之间 共享数据

容器应用的数据持久化

volume常见的类型

常规的存储 EmptyDir HostPath

高级存储 PV PVC

配置存储 configMap Secret

其他类型的存储 nfs cifs ceph

EmptyDir 空目录存储

特点:能实现pod中容器之间的数据共享 但没有数据持久化的功能

随pod删除而删除

HostPath 主机路径存储

特点:实现容器之间的数据共享和外部访问应用数据 具有数据持久化功能

属于节点主机的目录 不随pod删除而删除

类型:

Directory 指定的主机目录必须存在

DirectoryOrCreate 目录不存在会自动创建空目录

File 指定文件必须存在

FileOrCreate 文件不存在会自动创建空文件

configmap和secret

共同特点:实现向pod应用注入配置数据或者验证信息

区别:configmap 明文数据的注入

Secret 密文数据注入

创建Configmap资源的两种方式

命名格式

Kubectl create configmap NAME --from-literall=key1=value1 --from-literal=key2=value2

文件格式

Data:

  info:

    key1:value1

    key2:value2

Secret 资源

用来保存敏感信息 比如:密码 密钥 整数 令牌

将数据加密后将密文注入到pod应用中

pod中使用secret三种方式

作为挂载到一个或多个容器上的卷中文件

作为容器的环境变量

由kubelet在为pod拉取镜像时使用

secret的类型

Dockerconfigjson 用来存储私有的docker registry(容器仓库)的认证信息

Service Account 与k8s api-server交互的pod会自动拥有此类账号

Opaque 通过base64来加密明文数据

主要用于用户自定义的加密数据注入

PV persistent volume 存储卷

是集群中由专门人员配置的一段网络存储

pv没有命名空间隔离概念 不同的pv代表不同的存储类型资源(包括大小 种类)

PVC persistent volume claim 存储卷申请

是用户对特定存储的一种声明或者申请 特定的存储指的是pv

pvc可以指定特定的存储空间和访问模式 由k8s负责找到合适的pv与之对应

pv和pvc的关系:pv是集群中的资源 pvc对这种资源的申请

两者的声明周期

provisioning配置--->Binding绑定--->Using使用--->Releasing释放--->Recycling回收

pv的访问模式:用户对资源的访问权限

       ReadWriteOnce(RWO):读写权限,只能被单个节点挂载

       ReadOnlyMany(ROX): 只读权限,可以被多个节点挂载

       ReadWriteMany(RWX):读写权限,可以被多个节点挂载

回收策略:

Retain保留 当pv对象被删除后 与之相关的数据文件保留

Resyscle回收 相当于rm -rf ./* 与之相关的数据被删除 可用于新的pvc申领

pvc申领

Delete 当pv对象被删除 与之相关的数据和卷被删除

pv状态

Available可用 一块空闲的资源 没有被任何pvc绑定

Bound 已绑定 卷已被pvc申领

Released 已释放 申明被删除 但资源未被集群重新声明

Failed失败 改卷的自动回收失败

更多推荐