21 持久化存储之动态存储供应

在上一篇文章中,我们讨论了持久化存储的重要性及如何定义和使用存储类(StorageClass)。本篇将接着上篇的主题,深入探讨如何在 Kubernetes 中使用动态存储供应(Dynamic Provisioning)来自动创建持久化存储卷(Persistent Volume)。

什么是动态存储供应

动态存储供应是 Kubernetes 的一个强大功能,它允许系统根据用户的需要自动生成持久化存储卷。当你创建一个 PersistentVolumeClaim 时,Kubernetes 会根据该声明的信息选择合适的 StorageClass 并自动创建相应的 PersistentVolume。这使得存储管理变得更加高效和灵活。

基本概念

在使用动态存储供应之前,理解几个基本概念是必要的:

  • StorageClass:用于描述存储的属性及其提供者。
  • **PersistentVolume (PV)**:代表集群中的物理存储资源。
  • **PersistentVolumeClaim (PVC)**:用户对存储资源的请求。

设置动态存储供应

要使用动态存储供应,你首先需要确保你的 Kubernetes 集群已经配置了一个存储后端,并定义了相应的 StorageClass。下面是设置和使用动态存储供应的步骤。

1. 创建存储类

首先,定义一个 StorageClass,这里以使用 gce-pd(Google Cloud Persistent Disk)为例。

1
2
3
4
5
6
7
8
9
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: my-storage-class
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
reclaimPolicy: Delete
allowVolumeExpansion: true

在这个例子中,provisioner 字段指定了存储的提供者,reclaimPolicy 定义了当 PVC 被删除后 PV 的处理方式,而 allowVolumeExpansion 允许对卷的扩展。

2. 创建持久化存储声明

接下来,我们创建一个 PersistentVolumeClaim,请求使用刚才定义的存储类。

1
2
3
4
5
6
7
8
9
10
11
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: my-storage-class

3. 验证动态存储供应

应用上面的 YAML 文件后,你可以使用以下命令检查 PVC 和 PV 的状态:

1
2
kubectl get pvc
kubectl get pv

如果一切正常,你应该会看到 PVC 的状态为 Bound,并且有对应的 PV 被创建。

4. 使用持久化卷

现在,您可以在 Pod 中使用这个 PVC。以下是一个简单的 Pod 定义示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app-container
image: nginx
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: my-volume
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: my-pvc

在这个示例中,我们将 PVC 挂载到 Nginx 服务器的 /usr/share/nginx/html 目录。

5. 测试与验证

部署 Pod 后,你可以通过以下命令查看 Pod 的状态:

1
kubectl get pods

你可以使用以下命令进入 Pod 并验证挂载是否成功:

1
kubectl exec -it my-app -- /bin/bash

在 Pod 中,检查 /usr/share/nginx/html 目录,确认持久化存储卷已成功挂载。

总结

到目前为止,我们已经成功地创建了一个动态存储供应和 PVC,并将其挂载到应用 Pod 中。这种方式使得存储的管理和使用变得更加简单和灵活。动态存储供应的使用场景非常广泛,适用于多种场景,从简单的 Web 应用到复杂的数据库集群都能很好地适应。

在下一篇文章中,我们将讨论集群管理与监控工具,帮助我们更有效地管理和监控 Kubernetes 环境。确保持续关注!

21 持久化存储之动态存储供应

https://zglg.work/kubernetes-zero/21/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论