kubernetes学习-00-NFS存储/静态创建pv

说明:以下内容的学习参考k8s官网,链接地址k8s官网参考链接
以下为手动创建pv及pvc,并根据官网文档重点说明pvc和pv绑定策略。

1.pv

NFS的pv有静态和动态,动态创建pv需要插件配合,这里介绍静态创建pv。搭建好NFS之后创建好NFS的共享目录,PV配置关联NFS的地址及共享目录路径。

nfs-pv.yaml示例配置如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv    #pv的名字
  labels:
    pv: nfs  #pvc可以使用标签选择器来选择该pv,storageClassName和标签选择器是AND关系,如果storageClassName相同,标签选择器不同则pvc一直是pending状态
spec:
  capacity:
    storage: 5Gi    #pv存储空间的大小,这里的空间大小并不能现在pod使用NFS空间的大小,作为pvc和pv绑定选择使用,pv的空间符合pvc的要求则可以进行绑定
  volumeMode: Filesystem  #存储卷模式,默认为Filesystem,可选项还有Block
  accessModes:
    - ReadWriteMany    #存储卷的访问模式有三种ReadWriteOnce、ReadOnlyMany、ReadWriteMany
  persistentVolumeReclaimPolicy: Retain #pv回收策略有三种Retain(保留。pv删除,存储数据保留,需删除需手动)、Recycle(回收。pv删除,存储的数据被清空删除掉)、Delete(删除。pv删除,则后端的存储设备也删除掉,常用语云厂商)
  storageClassName: slow  #pv和pvc的该项保持一致才可以进行绑定
  nfs:
    path: /tmp    #NFS共享目录
    server: 172.17.0.2  #NFS服务器地址

2.pvc

nfs-pvc.yaml示例配置如下:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc  #pvc名字
spec:
  accessModes:  #pvc在请求pv的时候访问模式保持一致
    - ReadWriteMany  #同pv一样三种模式
  volumeMode: Filesystem  #同pv一样两种模式
  resources:
    requests:
      storage: 3Gi  #pvc空间的大小,并不能作为pod使用存储的空间限制,而是作为选择绑定pv的条件。
  storageClassName: slow  #pvc和pv保持一致才可以进行绑定,否则一直penting状态
  selector:  #pvc可以通过标签选择器选择绑定pv。如果同时设置selector和storageClassName,那么再进行绑定pv匹配选择的时候是AND的关系,两则同时满足才可以。
    matchLabels:
      pv: "nfs"
#    matchExpressions:
 #     - {key: environment, operator: In, values: [dev]}

3.pvc作为卷被pod挂载


apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: nfs-pvc

你可能感兴趣的:(kubernetes学习-00-NFS存储/静态创建pv)