K8s的PV/PVC

Posted y_zilong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s的PV/PVC相关的知识,希望对你有一定的参考价值。

1、Volume

#kubernentes的存储部分第一个介绍了Volume。Volume可以支持local、nfs、cephfs、glusterfs以及各种云计算平台。

#官网Volume的配置都是在一个创建pod的yaml文件中,例如

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: k8s.gcr.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      # directory location on host
      path: /data
      # this field is optional
      type: Directory

2、Persistent Volume和Persistent Volume Claim

#除了Volume之外,kubernetes还提供了Persistent Volume的方法。Volume主要是为了存储一些有必要保存的数据,而Persistent Volume主要是为了管理集群的存储。

#Persistent Volume相对独立于Pods,单独创建。比如:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 192.168.207.121
    path: "/nas/dg_vd"
    
#Persistent Volume对具体的存储进行配置和分配,而Pods等则可以使用Persistent Volume抽象出来的存储资源,不需要知道集群的存储细节。

#Persistent Volume和Persistent Volume Claim类似Pods和Nodes的关系,创建Pods需要消耗一定的Nodes的资源。而Persistent Volume则是提供了各种存储资源,而Persistent Volume Claim提出需要的存储标准,然后从现有存储资源中匹配或者动态建立新的资源,最后将两者进行绑定。

3、PVC的创建

#上面已经提到了创建PV的配置文件。PVC的内容如下:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: manual
  resources:
    requests:
      storage: 1Gi

4、Pods的使用

#Pods使用的是PersistentVolumeClaim而非PersistentVolume。
#具体配置如下

apiVersion: v1
kind: Pod
metadata:
  name: testpv
  labels:
    role: web-frontend
spec:
  containers:
  - name: web
    image: nginx
    ports:
      - name: web
        containerPort: 80
    volumeMounts:
        - name: nfs
          mountPath: "/usr/share/nginx/html"
  volumes:
  - name: nfs
    persistentVolumeClaim:
      claimName: nfs

以上是关于K8s的PV/PVC的主要内容,如果未能解决你的问题,请参考以下文章

k8s实践17:kubernetes对接nfs存储实现pvc动态按需创建分配绑定pv

K8s的PV/PVC

[云原生专题-38]:K8S - 核心概念 - 存储抽象- 空间大小可配置的目录挂载PV+PVC

持久化存储之 PV、PVC、StorageClass

k8s 挂载卷介绍

k8s安装nfs设置pv pvc并部署mysql