Kubernetes - 6.3 Config and Storage - PersistentVolume and PersistentVolumeClaim

简介:

什么是数据卷 (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资源定义清单创建PV
kubectl 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

image

查看PV详细信息
kubectl describe pv
image

什么是PVC (PersistentVolumeClaim)

PVC是声明定义存储数据使用的请求,被挂载到Pod中进行使用。通常由开发人员进行配置使用,不用关心数据存储底层具体的实现方式,只关心与业务相关的数据存储大小,访问方式等。

PV和PVC的绑定规则
  1. 按照访问模式来匹配
  2. 按照按照容量大小来选择最合适的匹配,尽量的节省资源
  3. 如访问模式和容量大小都一样,按照标签来匹配,如果以上条件都不满足,则随机匹配

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

image

查看PV详细信息
kubectl describe pvc
image

将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
image

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Kubernetes 容器
k8s指定config文件查看node—2023.02
k8s指定config文件查看node—2023.02
249 0
|
存储 Kubernetes 安全
Kubernetes必备知识: PersistentVolumeClaim
PersistentVolumeClaim(简称PVC)是用户存储的请求,PVC消耗PV的资源,可以请求特定的大小和访问模式,需要指定归属于某个Namespace,在同一个Namespace的Pod才可以指定对应的PVC。 当需要不同性质的PV来满足存储需求时,可以使用StorageClass来实现。 每个 PVC 中都包含一个 spec 规格字段和一个 status 声明状态字段。
3930 0
Kubernetes必备知识: PersistentVolumeClaim
|
存储 Kubernetes 安全
云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
404 5
|
存储 Kubernetes 监控
【云原生】Kubernetes----PersistentVolume(PV)与PersistentVolumeClaim(PVC)详解
【云原生】Kubernetes----PersistentVolume(PV)与PersistentVolumeClaim(PVC)详解
|
Kubernetes 容器
k8s-error execution phase upload-config/kubelet: Error writing Crisocket...
k8s-error execution phase upload-config/kubelet: Error writing Crisocket...
370 0
|
存储 Kubernetes 数据安全/隐私保护
K8S | Config应用配置
不论是应用还是运行层面的配置,都会涉及到一个基本的逻辑:配置可以抽取出来单独管理,在流程中直接引入该配置即可;
341 0
|
存储 Kubernetes 前端开发
Kubernetes config 配置访问多集群
Kubernetes config 配置访问多集群
|
Kubernetes 应用服务中间件 API
|
存储 Kubernetes 应用服务中间件

热门文章

最新文章

下一篇
开通oss服务