(1). NFS存储的缺陷
- 需要配置IP,如果IP出现问题呢?
- 需要知道nfs暴露的目录.
(2). PV和PVC概念
PV(PersistentVolume)持久化存储,它是外部存储系统中的一块存储空间,由管理员创建和维护.与Volume一样,PV具有持久性,但是:生命周期独立于Pod.
PVC(PersistentVolumeClaim),(PVC)是对PV的申请(Claim).PVC通常由普通用户创建和维护,当需要为Pod分配存储资源时,用户可以创建一个PVC,指明存储资源的容量大小和访问模式(比如只读)等信息,Kubernetes 会查找并提供满足条件的PV.(3). 步骤
- 运维定义PV(数据存储的IP,路径,存储容量,匹配模式…)
- 开发定义PVC,与PV进行绑定.
- 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
测试访问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 ```