(1). NFS存储的缺陷

  1. 需要配置IP,如果IP出现问题呢?
  2. 需要知道nfs暴露的目录.

    (2). PV和PVC概念

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

    (3). 步骤

  3. 运维定义PV(数据存储的IP,路径,存储容量,匹配模式…)
  4. 开发定义PVC,与PV进行绑定.
  5. YAML定义应用与PVC的绑定.

    (4). 定义pod,pv,pvc

    ``` apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: name: nginx spec: replicas: 3 selector: matchLabels: name: nginx template: metadata: labels: name: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - name: wwwroot mountPath: /usr/share/nginx/html volumes: - name: wwwroot persistentVolumeClaim: claimName: nfs # 指定pvc的名称 — apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs spec: accessModes:

    • ReadWriteMany # storageClassName: manual resources: requests: storage: 512Mi — apiVersion: v1 kind: PersistentVolume metadata: name: nfs spec: # storageClassName: manual capacity: storage: 5Gi accessModes:
    • ReadWriteMany nfs: server: 10.211.55.100 path: /data/volumes/www-lixin-help
      ### (5). 部署
      

      部署

      [root@master k8s-pv-pvc]# kubectl apply -f test-pv.yml deployment.apps/nginx created persistentvolumeclaim/nfs created persistentvolume/nfs created

本看pvc和pv的绑定关系

[root@master k8s-pv-pvc]# kubectl get pv,pvc

pv定义容量

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/nfs 5Gi RWX Retain Bound default/nfs 6s

pvc绑定到了volume:nfs

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/nfs Bound nfs 5Gi RWX 6s

查看pod

[root@master k8s-pv-pvc]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-78d457657-gbkh6 1/1 Running 0 30s nginx-78d457657-kn5bn 1/1 Running 0 30s nginx-78d457657-mldpq 1/1 Running 0 30s

进入容器内部

[root@master k8s-pv-pvc]# kubectl exec -it nginx-78d457657-gbkh6 – bash

查看容器内部目录信息

root@nginx-78d457657-gbkh6:/# ls /usr/share/nginx/html/ index.html

容器内部测试访问

root@nginx-78d457657-gbkh6:/# curl http://localhost welcome to use nginx

查看pod以及Pod IP

[root@master k8s-pv-pvc]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-78d457657-gbkh6 1/1 Running 0 4m26s 10.244.1.111 node-1 nginx-78d457657-kn5bn 1/1 Running 0 4m26s 10.244.2.112 node-2 nginx-78d457657-mldpq 1/1 Running 0 4m26s 10.244.2.111 node-2

测试访问Pod IP

[root@master k8s-pv-pvc]# curl http://10.244.1.111 welcome to use nginx

测试访问Pod IP

[root@master k8s-pv-pvc]# curl http://10.244.2.112 welcome to use nginx

测试访问Pod IP

[root@master k8s-pv-pvc]# curl http://10.244.2.111 welcome to use nginx ```