关于Persistent Volumes的内容
关于持久卷(Persistent Volumes)
首先
Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。本文将详细介绍K8s核心的存储概念,即持久卷(Persistent Volumes,PV)和持久卷声明(Persistent Volume Claims,PVC)。
2. 持续卷(PV)是什么?
PVの概念:
PVはクラスタ内のストレージの一部を表すリソースです。このストレージは、外部のクラウドプロバイダからのストレージやローカルの物理的なディスクなど、さまざまなソースを持つことができます。
以下是PV設定的例子:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: slow
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: /path/to/my/data
server: nfs-server.example.com
3. 持久性卷索取(PVC)是什么?
PVCの役割と動作:
PVCはユーザーによってリクエストされるストレージの量やアクセスモードを表すリソースです。PVCはその要求を満たすための適切なPVを探してバインドします。
以下是PVC的設定範例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: slow
4. 存储类型和PV背后的技术
主机基础的卷:主机路径:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
hostPath:
path: /data/on/host
5. 配置方法
儲存類別(StorageClass)的動態配置設定範例。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
6. 存储类与其使用
StorageClass的设置示例:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
7. CSI(容器存储接口)的概述
CSI为K8s和不同的存储提供商之间提供了标准接口,从而实现了将各种存储解决方案与K8s集成的功能。
8. 太阳能控制器和光伏/光电池的生命周期
光伏控制器是什么?
PV控制器是Kubernetes控制平面的一部分,负责监视和管理PV和PVC的生命周期。控制器负责自动绑定满足特定PVC所需资源的PV,以及根据重新声明策略重新利用PV资源等许多自动化任务。
聚氯乙烯(PVC)和光伏(PV)的寿命周期
-
- 存储供应:
-
- 用户通过创建PVC来表明对存储的需求。在动态供应的情况下,如果没有与PVC的需求匹配的PV,将自动进行新的PV供应。
绑定:
当PVC的需求与PV匹配时,通过PV控制器进行绑定。这样,PVC与特定的PV关联,占用相应的存储空间。
使用:
Pod使用PVC来访问其存储并读写数据。在此过程中,只需指定PVC的名称,无需担心实际存储的详细信息,即可使用数据。
释放:
当PVC对象被删除时,与其绑定的PV将被释放。这时,根据PV的重新索取策略,决定如何处理后续的PV(例如:保留、删除、回收)。
重新索取:
如果PV被重新使用,根据其重新索取策略,决定保留、删除或初始化供再利用的PV数据。
9. 总结
Kubernetes的PV和PVC提供了强大的功能,以满足容器化应用程序的持久化存储需求。通过选择正确的存储解决方案和管理方法,应用程序可以有效地扩展,并保证数据的持久性和可用性。
鑑於 Container Storage Interface(CSI)為一個倡議,旨在為容器編排系統(如 Kubernetes、Mesos等)與儲存後端之間提供標準化的介面。這樣一來,儲存供應商可以編寫一個單一的插件,以供應不同的容器編排系統使用。
10. 赠品
CSI的主要特征和目的:
-
- 平台的中立性:CSI被设计为不依赖于诸如Kubernetes等容器编排平台,并能在各种系统上运行。
端到端的卷生命周期:CSI支持存储的完整生命周期,包括卷的配置、挂载、卸载等操作。
外部化:CSI插件存在于容器编排系统的外部,从而将存储逻辑与核心编排逻辑分隔开。这使得存储供应商可以在不更新插件的情况下添加新功能或修复错误。
标准化:CSI的目标是确保存储接口的一致性和标准化,从而使存储提供商不再需要编写适用于不同容器编排平台的多个插件。
CSI的主要操作:
CSI的主要操作:
-
- 身份服务:公开插件功能和版本信息。
控制器服务:支持控制器特定的操作,如卷的规划、附加、快照创建等。
节点服务:支持节点特定的操作,如卷的挂载和卸载等。
CSI对于Kubernetes内的入口存储插件架构带来了革命。由于入口插件是直接嵌入在Kubernetes的代码库中的,因此它的更新和维护变得复杂。CSI的采用使得存储提供者可以独立地、更快速、更安全地开发、发布和更新插件。