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
image

需要注意: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"  # 宿主机路径

image

3、PVC如何绑定到PV

image

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进行挂载测试
image

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已挂载
image

这会儿,在nfs共享机器上创建index.html,并写入“nfs”
image
再回到pod资源中查看挂载的目录下,出现新创建的index.html文件,内容与刚才添加的一致
image

posted @ 2021-10-29 18:31  Hei蛋炒饭  阅读(1011)  评论(0编辑  收藏  举报