kubernetes nfs-client-provisioner外部存储控制器

 

介绍:

nfs-client-provisione是一个专门用于NFS外部目录挂载的控制器,当多个副本创建时,他们的命名方式如下:

  • pv provisioned as ${namespace}-${pvcName}-${pvName} 表示正在使用的
  • pv recycled as archieved-${namespace}-${pvcName}-${pvName}  POD delete操作后之前使用的PV目录名称前面会多出一个archieved-用于区分

现在测试:

1.安装NFS

NFS测试环境:腾讯云NFS文件存储(自建NFS也可以)

首先登陆腾讯云平台打开文件存储服务,新建一个服务,注意地址选择何K8S同一网络环境

 

这里我的NFS服务端地址是192.168.100.74~至此NFS已经创建完成

 

2.部署nfs-client-provisioner

下面用到的测试文件均是从官方文档种获取的

地址:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client

 

 

我的K8S版本是1.10

kubectl create -f deployment.yaml

这里只需要修改你的NFS地址即可 /ifs/kubernetes 是你远程端NFS需要创建的目录记得提前创建,否则会报错创建PVC的时候会提示你让你手动创建目录

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: nfs-client-provisioner
.....
          image: registry.cn-hangzhou.aliyuncs.com/lisong/nfs-client-provisioner:latest #地址默认是谷歌的,如果你没有翻墙请改成这个
.....  

kubectl create -f class.yaml

##千万注意上面第一个操作不要使用deployment去执行~否则你会发现POD无法创建

上面2部执行完成之后我们需要作RBAC认证,文件也在官方文档种有,目录是deploy/auth

kubectl create -f serviceaccount.yaml

kubectl create -f clusterrole.yaml

kubectl create -f clusterrolebinding.yaml

上述操作做完之后测试是否能够正常挂载

kubectl create -f test-clai.yaml # 声明,指定使用哪一个外部控制器以及对控制器资源的请求容量

kubectl create -f test-pod.yaml #创建测试POD

kind: Pod
apiVersion: v1
metadata:
  name: test-pod
spec:
  containers:
  - name: test-pod
    image: busybox:1.24  #官方的busybox地址是谷歌的,如果你没有翻墙请改成这个
    command:
      - "/bin/sh"
    args:
      - "-c"
      - "touch /mnt/SUCCESS && exit 0 || exit 1"
    volumeMounts:
      - name: nfs-pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  volumes:
    - name: nfs-pvc
      persistentVolumeClaim:
        claimName: test-claim

  

查看PO

 

现在我们请查看我们的NFS服务~因为NFS是使用的腾讯云的,所以我们找个地方挂载我们的根目录/

mount -t nfs -o vers=4 192.168.100.74:/ /testnfs/

~请记住

 /testnfs/就是你的NFS根目录,不要搞混了~在POD上创建的挂在目录都是NFS上面的目录

 

 完成,目录已创建~看一下是否创建了文件

 

 文件也创建成功

NFS挂在还有2种方式

第一种:

 第二种:

第二种和我提到的外部控制器原理是一样的~只是第一个PV将不需要由我们请创建和维护了~

具体就是 创建PV 包含了NFS的IP地址,NFS版本,模式,指定PV的大小 #NFS目录需要提前创建好,否则在创建PVC时候等提示,等待VLOUME创建,需要管理员请创建这个目录~

在然后就一样了,创建StorageClass,创建PVC,

如何使用:

    跟test-pod.yaml使用方法一样。

原文地址:https://www.cnblogs.com/heweiblog/p/9073261.html