kubernetes 配置示例 - PVC 和 PV

PVC 可以看做是一个接口,PV 可以看做是 PVC 的一个实现。开发人员只需要定义 PVC,提出需要多大的一个存储空间,读取模式是怎么样的,不需要知道数据是通过什么方式存储的。运维人员则提供 PV,可以是 ceph,也可以是 NFS 或者其它。

#定义PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim
spec:
  accessModes:
  - ReadWriteOnce
  resources:
  - requests:
      storage: 1Gi
  storageClassName: rook-cephfs

上面的 PV,一般情况下是 k8s 通过 Dynamic Provisioning 机制自动创建的。如何自动创建 PV 呢?这里的 storageClassName 就表示用名称为 rook-cephfs 这个 StorageClass 去自动创建 PV。这个 StorageClass 是部署 Rook-Ceph 后创建的。相应的 yaml 文件在官方的下载包的 /cluster/examples/kubernetes/ceph/csi/cephfs/storageclass.yaml (我用的是 1.5 版本 https://rook.io/docs/rook/v1.5/ceph-quickstart.html

 下面定义一个 Pod 使用 PVC

apiVersion: v1
kind: Pod
metadata:
  name: pv-pod
spec:
  containers:
  - name: pv-container
    image: nginx
    ports:
    - containerPort: 80
      name: "http-server"
    volumeMounts:
    - mountPath: "/usr/share/nginx/html"
      name: pv-storage
  volumes:
  - name: pv-storage
    persistentVolumeClaim:
      claimName: pv-claim  #这里的值与上面PVC 里定义的名称一样

as 

posted @ 2022-01-25 17:34  一剑侵心  阅读(176)  评论(0编辑  收藏  举报