k8s学习记录【进阶篇】,创建NAS或NFS类型的PV和HostPath类型的PV(二十四)
文章中资料参考来源2022 云原生Kubernetes全栈架构师
1、创建NAS/NFS类型的PV
官方示例
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs
spec:
capacity: #容量配置
storage: 5Gi
volumeMode: Filesystem #卷的模式,目前支持Filesystem(文件系统)和Block(块),其中Block类型需要后端存储支持,默认为文件系统
accessModes: #PV的访问策略
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle #PV的回收策略
storageClassName: nfs-slow #PV的类,一个特定类型的PV只能绑定到特定类别的PVC
mountOptions:
- hard
- nfsvers=4.1
nfs: #NFS服务配置
path: /tmp #NFS上的共享目录
server: 172.17.0.2 #NFS的IP地址
根据上面的yaml文件配置,创建PV
需要注意:PV能创建成功,但不代表存储一定能使用,需在Pod创建之后才能验证可用性
2、创建HostPath类型的PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: hostpath
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath: # hostPath服务配置
path: "/mnt/data" # 宿主机路径
3、PVC如何绑定到PV
a、创建NFS类型的PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc-claim
spec:
storageClassName: nfs-slow
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi # PVC的大小要小于等于PV
查看PV和PVC状态,显示已经绑定,但是生效与否还需使用Pod进行挂载测试
apiVersion: v1
kind: Pod
metadata:
name: nfs-pv-pod
spec:
volumes:
- name: task-pv-storage # Volume的名称
persistentVolumeClaim:
claimName: nfs-pvc-claim # PVC的名称
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
使用上面的yaml文件创建pod资源,创建成功,进入Pod中查看nfs已挂载
这会儿,在nfs共享机器上创建index.html,并写入“nfs”
再回到pod资源中查看挂载的目录下,出现新创建的index.html文件,内容与刚才添加的一致