如何在Kubernetes The Hard Way中配置持久化存储:从持久化卷到存储类的完整指南

如何在Kubernetes The Hard Way中配置持久化存储:从持久化卷到存储类的完整指南

【免费下载链接】kubernetes-the-hard-way Bootstrap Kubernetes the hard way on Vagrant on Local Machine. No scripts. 【免费下载链接】kubernetes-the-hard-way 项目地址: https://gitcode.com/gh_mirrors/kub/kubernetes-the-hard-way

Kubernetes The Hard Way是一个通过手动配置而非脚本快速搭建Kubernetes集群的开源项目,它为用户提供了深入理解Kubernetes核心组件的实践机会。本文将详细介绍如何在该环境中配置持久化存储,包括持久化卷(PersistentVolume)和存储类(StorageClass)的创建与管理,帮助新手用户轻松掌握Kubernetes存储管理的核心技能。

为什么Kubernetes持久化存储至关重要?

在Kubernetes集群中,Pod是临时的,当Pod重启或重新调度时,其中的数据会丢失。持久化存储解决了这一问题,确保数据能够在Pod生命周期之外长期保存。无论是数据库应用、日志存储还是用户数据,持久化存储都是生产环境中不可或缺的一部分。

Kubernetes提供了多种持久化存储方案,其中持久化卷(PV)和持久化卷声明(PVC)是最基础也是最常用的方式。存储类(StorageClass)则进一步简化了存储的动态供应,让用户无需手动创建PV即可快速获取存储资源。

持久化卷(PV):集群级别的存储资源

持久化卷是集群中的一块存储,由管理员预先配置或通过存储类动态创建。它与Pod无关,独立于Pod的生命周期,即使使用它的Pod被删除,PV仍然存在。

PV的主要类型

Kubernetes支持多种PV类型,包括:

  • 本地存储:直接使用节点上的本地磁盘
  • 网络存储:如NFS、iSCSI、Ceph等
  • 云存储:如AWS EBS、GCP Persistent Disk、Azure Disk等

在Kubernetes The Hard Way项目中,虽然没有提供现成的PV配置文件,但你可以参考项目中的部署文件结构,创建类似deployments/coredns.yaml的PV配置文件。

创建PV的基本步骤

  1. 准备存储介质(本地磁盘或网络存储)
  2. 创建PV配置文件(yaml格式)
  3. 使用kubectl apply命令创建PV

以下是一个简单的本地存储PV示例:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  hostPath:
    path: /data/local-pv

持久化卷声明(PVC):用户对存储的请求

持久化卷声明是用户对存储资源的请求。用户不需要直接了解底层存储的细节,只需通过PVC指定所需的存储大小和访问模式,Kubernetes会自动为其绑定合适的PV。

PVC的关键属性

  • 存储大小:请求的存储容量
  • 访问模式
    • ReadWriteOnce(RWO):只能被一个节点以读写方式挂载
    • ReadOnlyMany(ROX):可以被多个节点以只读方式挂载
    • ReadWriteMany(RWX):可以被多个节点以读写方式挂载
  • 存储类:指定使用哪个存储类

创建和使用PVC

创建PVC后,Kubernetes会自动为其绑定匹配的PV。然后,你可以在Pod中通过volumeMounts使用该PVC。

以下是一个PVC示例及其在Pod中的使用:

# PVC配置
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: local-storage
# Pod中使用PVC
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    volumeMounts:
    - name: my-volume
      mountPath: /data
  volumes:
  - name: my-volume
    persistentVolumeClaim:
      claimName: my-pvc

存储类(StorageClass):动态供应存储资源

存储类允许管理员定义不同类型的存储,用户可以通过PVC直接请求特定类型的存储,而无需关心底层PV的创建细节。Kubernetes会根据存储类的配置自动创建PV并绑定到PVC。

存储类的主要功能

  • 动态供应:自动创建PV
  • 回收策略:定义PV的回收方式(删除、保留或回收)
  • 参数配置:指定存储的性能、类型等参数

创建存储类

以下是一个使用本地存储的存储类示例:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

在Kubernetes The Hard Way项目中,你可以将存储类配置文件放在deployments/目录下,与其他部署文件保持一致。

验证存储配置是否生效

配置完PV、PVC和存储类后,你需要验证存储是否正常工作。可以参考docs/16-smoke-test.md中的测试方法,创建一个使用PVC的Pod,并检查数据是否能够持久化。

Kubernetes存储配置验证

验证步骤

  1. 创建一个使用PVC的测试Pod
  2. 在Pod中创建测试文件
  3. 删除Pod并重新创建
  4. 检查测试文件是否仍然存在

如果测试文件在Pod重新创建后仍然存在,说明你的持久化存储配置成功。

总结:Kubernetes存储管理最佳实践

  1. 合理选择存储类型:根据应用需求选择合适的存储类型和访问模式
  2. 使用存储类:尽量使用存储类实现动态存储供应,简化管理
  3. 定期备份数据:即使使用了持久化存储,也需要定期备份重要数据
  4. 监控存储使用情况:关注PV和PVC的使用情况,及时扩容

通过本文的指南,你已经了解了如何在Kubernetes The Hard Way项目中配置持久化存储。虽然该项目没有提供现成的存储配置文件,但你可以参考项目结构和本文的示例,轻松实现持久化卷和存储类的配置。

要开始使用Kubernetes The Hard Way项目,请克隆仓库:

git clone https://gitcode.com/gh_mirrors/kub/kubernetes-the-hard-way

祝你在Kubernetes的学习之旅中取得成功!

【免费下载链接】kubernetes-the-hard-way Bootstrap Kubernetes the hard way on Vagrant on Local Machine. No scripts. 【免费下载链接】kubernetes-the-hard-way 项目地址: https://gitcode.com/gh_mirrors/kub/kubernetes-the-hard-way

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值