如何在Mac上使用K8s的PersistentVolume存储类?

macOS上配置Kubernetes PersistentVolume存储类,需使用如NFS、iSCSI或云提供商的存储服务。

Kubernetes PersistentVolume 存储类

什么是 PersistentVolume (PV)?

PersistentVolume(PV)是 Kubernetes 中用于持久化存储的核心概念,PV 独立于 Pod 的生命周期,即使 Pod 被删除,数据依然会保留在 PV 中,PV 允许开发者将数据存储与 Pod 解耦,提供灵活且可靠的存储解决方案,PV 的生命周期与 Pod 无关,可以手动配置或通过动态存储类(StorageClass)来创建。

PersistentVolume 的基本结构

1、Access Modes(访问模式):定义了 Pod 如何与 PV 进行交互,主要有以下三种模式:

ReadWriteOnce(RWO):读写模式,只能被单个 Pod 挂载为读写模式。

ReadOnlyMany(ROX):只读模式,可以被多个 Pod 挂载为只读模式。

ReadWriteMany(RWX):读写模式,可以被多个 Pod 挂载为读写模式。

2、Storage Class(存储类):一种动态创建 PV 的机制,定义了 PV 的属性,包括存储类型、访问模式等,Storage Class 根据需求动态地创建 PV,使得存储管理更加灵活。

3、Capacity(容量):定义了 PV 的容量,以 GiB 或 TiB 为单位,Pod 可以使用 PV 上的所有容量,但不会超过 PV 的限制。

4、Reclaim Policy(回收策略):定义了当 PV 释放后的行为,主要有以下三种策略:

Retain:保留,PV 的数据会被保留,需要手动清理。

Recycle:回收,PV 的数据会被清空,重新变为可用状态。

Delete:删除,PV 的数据会被删除,PV 也会被删除。

PersistentVolume 的使用示例

以下是详细的使用步骤和示例,涉及 PV 的手动创建和使用。

步骤1:创建 PersistentVolume

创建一个 PV,指定其访问模式、容量、回收策略等属性。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mypv
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
     ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: manual
  hostPath:
    path: "/mnt/data"

应用 PV 配置:

kubectl apply f pv.yaml

步骤2:创建 PersistentVolumeClaim (PVC)

PVC 是用户对存储的请求,它指定了所需的存储大小、访问模式等。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes:
     ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

应用 PVC 配置:

kubectl apply f pvc.yaml

步骤3:创建 Pod 并使用 PVC

在 Pod 配置文件中引用 PVC,为容器提供持久化存储。

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
   name: mycontainer
    image: nginx
    volumeMounts:
     mountPath: "/usr/share/nginx/html"
      name: mypv
  volumes:
   name: mypv
    persistentVolumeClaim:
      claimName: mypvc

应用 Pod 配置:

kubectl apply f pod.yaml

步骤4:验证

确保 Pod 正常运行并且数据已正确挂载。

如何在Mac上使用K8s的PersistentVolume存储类?
kubectl get pod mypod

查看 PVC 绑定情况:

kubectl get pvc mypvc

查看 PV 状态:

kubectl get pv mypv

存储类的使用

存储类允许管理员定义存储的动态供应策略,当 PVC 与存储类匹配时,存储系统会自动创建相应的 PV,以下是创建和使用存储类的示例。

步骤1:创建存储类

创建一个名为mystorageclass 的存储类,使用 NFS 服务器作为后端存储。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: mystorageclass
provisioner: k8ssigs/nfssubdirexternalprovisioner
parameters:
  nfsServer: nfsserver.example.com
  path: /k8svolumes
reclaimPolicy: Delete
volumeBindingMode: Immediate

应用存储类配置:

kubectl apply f storageclass.yaml

步骤2:创建 PVC 并关联存储类

创建一个 PVC,指定存储类名称。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myapppvc
spec:
  accessModes:
     ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: mystorageclass

应用 PVC 配置:

kubectl apply f pvc.yaml

步骤3:创建 Deployment 使用 PVC

创建一个 Deployment,并将 PVC 与容器关联起来。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myappdeployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
       name: myapp
        image: myapp:v1
        ports:
         containerPort: 8080
        volumeMounts:
         mountPath: "/data"
          name: datavolume
      volumes:
       name: datavolume
        persistentVolumeClaim:
          claimName: myapppvc

应用 Deployment 配置:

kubectl apply f deployment.yaml

通过以上步骤,我们成功地为 Kubernetes 应用程序配置了持久化存储,使用 PersistentVolume、PersistentVolumeClaim 和 StorageClass,我们可以灵活地管理存储资源,并确保数据的持久性和可移植性,在实际生产环境中,建议进行详细的规划和测试,以确保存储解决方案满足应用程序的需求。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1236460.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-24 19:38
下一篇 2024-06-20 18:12

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入