Kubernetes - 6.3 Config and Storage - PersistentVolume and PersistentV...
什么是数据卷 (Volumns)
在Kubernetes Pod中的容器系统存储文件是临时的,Pod如果异常重启将会恢复到镜像的原始状态从而会丢失所有的状态包括系统存储文件,或者同一个Pod中多个容器需要共享数据。数据卷诞生就是为了解决这一类数据持久化及数据共享的场景,并与容器的生命周期分离开。
什么是PV (PersistentVolume)
PV是定义存储数据的方式,例如存储类、存储实现等,是由集群管理员定义的集群资源中的对象。
PV AccessModes 访问模式
ReadOnlyMany(ROX) 允许被多个节点以只读的模式进行挂载。
ReadWriteOnce(RWO)允许被单个节点以读写的模式进行挂载。
ReadWriteMany(RWX)允许被多个节点以读写的模式进行挂载。
PV Reclaim Policy 回收机制
Retain(保留) 当PVC与PV解除绑定关系后PV处于保留状态,如果有同样声明的PVC时PV将继续可以被绑定使用,期间数据不会被删除。
Recycle(回收) 当PVC与PV解除绑定关系后PV将会被回收,如果有新的声明的PVC时PV将继续可以被绑定使用,但在解除关系时会被删除数据。
Delete(删除) 当PVC与PV解除绑定关系后PV将会被删除,同时PVC数据也不会保留。
PV Phase 运行状态
Available PV处于可用状态,可以被PVC绑定。
Bound PV已被PVC所绑定。
Released PVC已删除,但PV还未被集群回收。
Failed PV自动回收失败。
PV 基本操作
通过YAML资源定义清单创建PVkubectl apply -f nginx-pv.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: nginx-pv spec: capacity: storage: 1Gi persistentVolumeReclaimPolicy: Delete accessModes: - ReadWriteMany hostPath: path: /data/volume/nginx-pv
查看PV详细信息kubectl describe pv
什么是PVC (PersistentVolumeClaim)
PVC是声明定义存储数据使用的请求,被挂载到Pod中进行使用。通常由开发人员进行配置使用,不用关心数据存储底层具体的实现方式,只关心与业务相关的数据存储大小,访问方式等。
PV和PVC的绑定规则
- 按照访问模式来匹配
- 按照按照容量大小来选择最合适的匹配,尽量的节省资源
- 如访问模式和容量大小都一样,按照标签来匹配,如果以上条件都不满足,则随机匹配
PV与PVC是一对一关系,一个PVC只能绑定到一个PV,如果PV被绑定后,其他PVC则无法在使用此PV。
PVC 基本操作
通过kubectl创建PVC
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 500M
查看PV详细信息kubectl describe pvc
将PVC挂载在Pod上当成数据卷使用kubectl apply -f nginx-pod-pvc.yaml
apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx image: nginx:1.16 volumeMounts: - name: nginx-volume mountPath: /data volumes: - name: nginx-volume persistentVolumeClaim: claimName: nginx-pvc
查看Pod挂载的持久卷信息kubectl describe pod

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kubernetes - 6.2 Config and Storage - Secrets
什么是Secret 通过Secret可以将敏感信息注入到Pod中的容器,一般用于存储访问私有仓库的账号密码、TLS证书、Token等。Secret可以做为容器依附在Pod中使用,或者可以通过环境变量引入。这是比直接使用ConfigMap更加安全的方式,降低敏感数据直接暴露给未授权用户的风险。 Secret 基本操作 通过kubectl create secret kubectl create secret generic nginx-secret --from-literal=password=123456 通过yaml资源配置清单先转换为Base64编码echo -n "123456" |base64 输出 MTIzNDU2kubectl apply -f nginx-secret.yaml apiVersion: v1 kind: Secret metadata: name: nginx-secret type: Opaque data: password: MTIzNDU2 Secret 类型 generic 从文件、目录或命令行参数中创建Secret。docker-regist...
- 下一篇
Kubernetes - 6.4 Config and Storage - Serivce Account
什么是Service Account Service Account是为了解决Kubernetes集群内部资源认证问题而诞生,例如Pod的进程想调用Kubernetes API或者其他外部服务。 Service Account基本操作 通过kubectl创建ServiceAccountkubectl create sa nginx-sa 可以见到创建了ServiceAccount之后也自动创建了Secret对象并自动引用了 将Service Account绑定到Pod kubectl apply -f nginx-pod-sa.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx image: nginx:1.16 serviceAccountName: nginx-sa
相关文章
文章评论
共有0条评论来说两句吧...