Kubernetes 中的持久卷(Persistent Volume) 具体概念请阅读官方文档:https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/
创建hostPath类型的PV和PVC
创建PV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| apiVersion: v1 kind: PersistentVolume metadata: name: pv-ssd-name labels: type: local spec: storageClassName: pv-ssd capacity: storage: 10Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: "/ssd"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| apiVersion: v1 kind: PersistentVolume metadata: name: pv-ssd-name labels: type: local spec: storageClassName: pv-ssd capacity: storage: 10Gi volumeMode: Filesystem
accessModes: - ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath: path: "/ssd"
|
创建PVC
1 2 3 4 5 6 7 8 9 10 11
| apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-ssd-name spec: storageClassName: pv-ssd accessModes: - ReadWriteOnce resources: requests: storage: 5Gi
|
1 2 3 4 5 6 7 8 9 10 11
| apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-ssd-name spec: storageClassName: pv-ssd accessModes: - ReadWriteOnce resources: requests: storage: 5Gi
|
创建资源并查看资源状态
1 2 3 4
| kubectl apply -f pv.yaml kubectl apply -f pv.yaml kubectl get pv kubectl get pvc
|


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS
VOLUME CLAIM STORAGECLASS REASON AGE
|
通过查看pvc状态可以看到STATUS字段显示的状态为Bound,这⾥表示PVC已经与PV进⾏了绑定
创建POD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| apiVersion: v1 kind: Pod metadata: name: pod-name spec: volumes: - name: volumes-name persistentVolumeClaim: claimName: pvc-ssd-name nodeSelector: kubernetes.io/hostname: node1 containers: - name: pod-name image: nginx:1.14.0 ports: - containerPort: 80 volumeMounts: - name: volumes-name mountPath: "/usr/share/nginx/html"
|
1 2 3 4 5 6
| persistentVolumeClaim: claimName: pvc-ssd-name
kubectl apply -f pod.yaml
|
测试挂载情况
1
| kubectl exec -it pod-name -- /bin/bash
|


Kubernetes 中的存储类 具体概念请阅读官方文档:https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/
创建NFS类型PV和PVC
nfs配置
1 2 3 4 5 6 7 8
| yum install nfs-utils -y cat > /etc/exports <<EOF /data/k8s/nfs 172.16.32.0/8(rw,sync,no_root_squash) EOF systemctl restart nfs rpcbind mkdir -p /data/k8s/nfs chown -R nfsnobody:nfsnobody /data/k8s/nfs/ echo "nfs master ok" >> /data/k8s/nfs/index.html
|
创建PV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs labels: type: nfs spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: nfs nfs: server: 172.16.32.144 path: /data/k8s/nfs
|
1 2 3 4 5 6 7
| kubectl apply -f pv-nfs.yaml
nfs: server: 172.16.32.144 path: /data/nfs-volume/mysql
|
创建PVC
1 2 3 4 5 6 7 8 9 10 11
| apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: storageClassName: nfs accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
|
1 2
| kubectl apply -f pvc-nfs.yaml
|
创建POD使用PVC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| apiVersion: v1 kind: Pod metadata: name: pod-pvc-nfs spec: volumes: - name: pvc-nfs persistentVolumeClaim: claimName: pvc-nfs containers: - name: pod-pvc-nfs image: nginx:1.14.0 ports: - containerPort: 80 volumeMounts: - name: pvc-nfs mountPath: "/usr/share/nginx/html"
|
1 2
| kubectl apply -f pod-pvc-nfs.yaml
|
测试访问
