Kubernetes中的PV和PVC

本文深入探讨Kubernetes中PersistentVolume(PV)与PersistentVolumeClaim(PVC)的使用方法,通过具体示例展示了如何配置PV与PVC,实现Pod的持久化存储需求。从PV的创建到PVC的绑定,再到Pod中PVC的应用,全面解析K8s存储机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

K8s引入了一组叫作Persistent Volume Claim(PVC)和Persistent Volume(PV) 的API对象,大大降低了用户声明和使用持久化Volume的门槛
在Pod的Volumes中,只要声明类型是persistentVolumeClaim,指定PVC的名字,当创建这个PVC对象,k8s就自动为它绑定一个符合条件的Volume,这个Volume,从PV来
PVC和PV的设计,类似“接口”和“实现”的思想,开发者只知道使用“接口”PVC,运维人员负责给“接口”绑定具体的实现PV,说白了PVC就是一种特殊的Volume

一、PV使用示例

apiVersion: v1
kind: PersistentVolume
metadata:
  name: cqh
  labels:
    cqh: chenqionghe
spec:
  capacity:
    storage: 100Mi
  volumeMode: Filesystem
  accessModes: ["ReadWriteMany"]
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /data/pv
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: cqh
          operator: In
          values:
          - chenqionghe

创建后查看

root@VM-0-8-ubuntu:/home/ubuntu/statefulset# kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM         STORAGECLASS    REASON    AGE
cqh       100Mi      RWX            Delete           Bound     default/cqh   local-storage             4m

二、PVC使用示例

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cqh
spec:
  storageClassName: local-storage
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 100Mi
  selector:
    matchLabels:
      cqh: chenqionghe

AccessModes为ReadWriteMany,表示这个Volume是可读写的,并且能挂载在多个节点上(官方支持的AccessMode)

执行创建后查看

root@VM-0-8-ubuntu:/home/ubuntu/statefulset# kubectl get pvc
NAME      STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS    AGE
cqh       Bound     cqh       100Mi      RWX            local-storage   4m

三、Pod使用pvc示例

apiVersion: v1
kind: Pod
metadata:
  name: cqh
spec:
  containers:
    - name: cqh-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: pv-storage
  volumes:
    - name: pv-storage
      persistentVolumeClaim:
        claimName: cqh

创建后查看

NAME                    READY     STATUS    RESTARTS   AGE       IP            NODE            NOMINATED NODE
cqh                     1/1       Running   0          4m        10.244.0.46   vm-0-8-ubuntu   <none>
root@VM-0-8-ubuntu:/home/ubuntu/statefulset# kubectl describe po cqh
Name:               cqh
Namespace:          default
...
Volumes:
  pv-storage:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  cqh
    ReadOnly:   false
  default-token-gqfrx:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-gqfrx
    Optional:    false
...
Events:
  Type    Reason     Age   From                    Message
  ----    ------     ----  ----                    -------
  Normal  Scheduled  4m    default-scheduler       Successfully assigned default/cqh to vm-0-8-ubuntu
  Normal  Pulling    4m    kubelet, vm-0-8-ubuntu  pulling image "nginx"
  Normal  Pulled     4m    kubelet, vm-0-8-ubuntu  Successfully pulled image "nginx"
  Normal  Created    4m    kubelet, vm-0-8-ubuntu  Created container
  Normal  Started    4m    kubelet, vm-0-8-ubuntu  Started container

转载于:https://www.cnblogs.com/chenqionghe/p/11609008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值