Kubernetes之七:持久化存储PV和PVC

kubernet提供了后端存储空间的解决方案,引申出PV和PVC的概念。

PersistentVolume (PV) 是外部存储系统中的一块存储空间,由管理员创建和维护。与 Volume 一样,PV 具有持久性,生命周期独立于 Pod。PersistentVolumeClaim (PVC) 是对 PV 的申请 (Claim)。PVC 通常由普通用户创建和维护。需要为Pod 分配存储资源时,用户可以创建一个 PVC,指明存储资源的容量大小和访问模式(比如只读)等信息,Kubernetes会查找并提供满足条件的 PV。


PV和 PVC的查询命令:

pv的API字段配置说明

kubectl explain pods.spec.volumes

pvc的AP/字段配置说明

kubectl explain pods.spec.volumes.persistentVolumeClaim

sc(接收PVC,动态化PV的效果)的API字段配置说明

kubectl explain sc

基于NFS的持久化存储

一,在master节点创建nfsdata共享./etc/exports中输入如下,exportfs -r生效,启动nfs,具体见nfs配置:

/nfsdata *(rw,no_root_squash,no_all_squash,sync)

二,创建pv

 pv.yaml配置

apiVersion: v1

kind: PersistentVolume

metadata:

  name: nfs-pv

spec:

  capacity:

    storage: 100Mi

  accessModes:

    - ReadWriteMany

  nfs:

    # FIXME: use the right IP

    server: 192.168.0.X

    path: "/nfsdata"

pvc配置

apiVersion: v1

kind: PersistentVolume

metadata:

  name: nfs-pv

spec:

  capacity:

    storage: 100Mi

  accessModes:

    - ReadWriteMany

  nfs:

    # FIXME: use the right IP

    server: 192.168.0.4

    path: "/nfsdata"

[root@master ~]# cat pvc.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: nfs-pvc

spec:

  accessModes:

    - ReadWriteMany

  resources:

    requests:

      storage: 90Mi

其上再创建一个nginx的pod

apiVersion: v1

kind: Pod

metadata:

  name: nginx-volume-pvc

spec:

  containers:

  - name: nginx-pvc

    image: nginx

    ports:

    - containerPort: 80

    volumeMounts:

    - name: html-pvc        #自定义名的引用

      mountPath: /usr/share/nginx/html/

  volumes:              #这里是选择volume的类型

  - name: html-pvc          #自定义名

    persistentVolumeClaim:

      claimName: nfs-pvc    #我们刚才定义的pvc名

以上三个配置用kubectl apply -f进行生成,查看

kubectl get pv/pvc进行查看状态。

你可能感兴趣的:(Kubernetes之七:持久化存储PV和PVC)