k8s中创建nfs外部供应商(provisioner)

1、环境说明操作系统:cenots7.9k8s版本:1.25容器运行时:containerdnfs:1.3.02、搭建nfs服务1、服务端1、安装nfs服务yum install -y nfs-utils rpcbind net-tools2、修改配置文件vim /etc/exports/data/nfs *(rw,no_root_squash,sync)3、创建共享目录mkdir /data/nfs -p4、授权chmod 755 -R /data/nfs5、启动nfs服务systemctl enable rpcbind –nowsystemctl enable nfs –now6、常用命令exportfs -avr#重新加载配置文件showmount -e #查看本地nfs共享的目录2、客户端1、安装软件yum install nfs-utilsps: 不需要启动服务2、查看nfs服务器上可用的共享目录showmount -e 192.168.100.40ps:ip为nfs服务器的ip,nfs的客户端安装在k8s的所有worker节点3、在K8s的==master==节点上创建sa并授权1、创建savim /yaml/nfs-sa.yamlapiVersion: v1kind: ServiceAccountmetadata: name: nfs-provisioner2、应用服务[root@master yaml]# kubectl apply -f /yaml/nfs-sa.yaml[root@master yaml]# kubectl get sa nfs-provisioner NAME SECRETS AGEnfs-provisioner 0 59m3、给sa授权[root@master yaml]# kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding –clusterrole=cluster-admin –serviceaccount=default:nfs-provisioner[root@master yaml]# kubectl get clusterrolebindings.rbac.authorization.k8s.io nfs-provisioner-clusterrolebinding NAME ROLE AGEnfs-provisioner-clusterrolebinding ClusterRole/cluster-admin 60m4、创建nfs外部提供商1、使用deployment资源进行创建[root@master yaml]# cat nfs-deployment-provisioner.yaml kind: DeploymentapiVersion: apps/v1metadata: name: nfs-provisionerspec: selector: matchLabels: app: nfs-provisioner replicas: 1 strategy: type: Recreate template: metadata: labels: app: nfs-provisioner spec: serviceAccount: nfs-provisioner#使用创建的sa containers: – name: nfs-provisioner image: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0 imagePullPolicy: IfNotPresent volumeMounts: – name: nfs-client-root mountPath: /persistentvolumes env:#设置容器环境变量 – name: PROVISIONER_NAME value: example.com/nfs – name: NFS_SERVER value: 192.168.100.40#配置nfs服务器的IP地址或者域名 – name: NFS_PATH value: /data/k8s-pro#配置nfs服务器的共享目录 volumes:#在volumes中执行nfs服务器的IP和共享目录 – name: nfs-client-root nfs: server: 192.168.100.40 path: /data/k8s-props: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0如果配置了阿里云的镜像加速器,这个镜像会在创建deployment后自动拉取2、创建deployment[root@master yaml]# kubectl apply -f /yaml/nfs-deployment-privisioner.yaml3、查看[root@master yaml]# kubectl get deployments.apps nfs-provisioner NAME READY UP-TO-DATE AVAILABLE AGEnfs-provisioner 1/1 1 1 38m6、测试1、创建StorageClass[root@master yaml]# vim nfs-storageclass.yaml apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: nfsprovisioner: example.com/nfs#指定创建的供应商[root@master yaml]# kubectl apply -f nfs-storageclass.yaml storageclass.storage.k8s.io/nfs created[root@master yaml]# kubectl get scNAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGEnfs example.com/nfs Delete Immediate false 30m2、创建pvc[root@master yaml]# vim nfs-pvc.yaml apiVersion: v1kind: PersistentVolumeClaimmetadata: name: nfs-pvc namespace: default labels: app: nfs-pvcspec: accessModes:#指定访问类型 – ReadWriteOnce volumeMode: Filesystem#指定卷类型 resources: requests: storage: 2Gi storageClassName: nfs#指定创建的存储类的名字[root@master yaml]# kubectl apply -f nfs-pvc.yaml 查看自动创建的pv和pvc[root@master yaml]# kubectl get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEnfs-pvc Bound pvc-310123f1-4727-4591-b18f-59337fab5ec7 2Gi RWO nfs 6s[root@master yaml]# kubectl get pvNAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEpvc-310123f1-4727-4591-b18f-59337fab5ec7 2Gi RWO Delete Bound default/nfs-pvc nfs 9s查看你nfs共享目录[root@nfs ~]# ll /data/k8s-pro/total 0drwxrwxrwx 2 root root 6 Nov 17 00:36 default-nfs-pvc-pvc-310123f1-4727-4591-b18f-59337fab5ec7总结:创建pvc使使用storageclass,那么将会自动创建pv并进行绑定

参考:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

当你能飞的时候就不要放弃飞

k8s中创建nfs外部供应商(provisioner)

相关文章:

你感兴趣的文章:

标签云: