首页 > 其他 > 详细

k8s基于NFS部署storageclass实现pv并标记为一个默认的StorageClass

时间:2020-12-14 08:38:38      阅读:198      评论:0      收藏:0      [点我收藏+]

架构:
技术分享图片

一. 搭建storageclass (跟k8s集群同一网段下的主机)
1.搭建NFS服务 (所有节点)
安装nfs服务:(集群中的每个节点也要安装否则不支持)

yum -y install nfs-utils

启动nfs并设为开机自启:

systemctl start nfs && systemctl enable nfs

创建共享挂载目录: mkdir -pv /data/volumes/{v1,v2,v3}

mkdir -pv /data/volumes/{v1,v2,v3}

编辑/etc/exports文件,将目录共享到192.168.200.0/24这个网段中:(网段根据自己的情况写)

vim /etc/exports
/data/volume/v1  192.168.200.0/24(rw,no_root_squash)
/data/volume/v2  192.168.200.0/24(rw,no_root_squash)
/data/volume/v3  192.168.200.0/24(rw,no_root_squash)

发布:exportfs -avr

exporting 192.168.200.0/24:/data/volume/v3
exporting 192.168.200.0/24:/data/volume/v2
exporting 192.168.200.0/24:/data/volume/v1

查看:showmount -e

/data/volume/v3 192.168.200.0/24
/data/volume/v2 192.168.200.0/24
/data/volume/v1 192.168.200.0/24

2.在k8s的master主节点部署NFS插件

下载项目:

for file in class.yaml deployment.yaml rbac.yaml test-claim.yaml ; do wget https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/$file ; done

修改deployment.yaml文件

vim deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: quay.io/external_storage/nfs-client-provisioner:latest     ##默认是latest版本
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: fuseim.pri/ifs          ##这里的供应者名称必须和class.yaml中的provisioner的名称一致,否则部署不成功
            - name: NFS_SERVER
              value: 192.168.200.3           ##这里写NFS服务器的IP地址或者能解析到的主机名
            - name: NFS_PATH
              value: /data/volumes/v1        ##这里写NFS服务器中的共享挂载目录(强调:这里的路径必须是目录中最后一层的文件夹,否则部署的应用将无权限创建目录导致Pending)
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.200.3            ##NFS服务器的IP或可解析到的主机名 
            path: /data/volumes/v1           ##NFS服务器中的共享挂载目录(强调:这里的路径必须是目录中最后一层的文件夹,否则部署的应用将无权限创建目录导致Pending)

3.部署yaml文件

kubectl apply -f class.yaml 
kubectl apply -f deployment.yaml
kubectl apply -f rbac.yaml
kubectl apply -f test-claim.yaml  (测试文件随意,我是没安装这个文件,其它都安装了)

4.查看服务

kubectl get pods
NAME                                      READY   STATUS    RESTARTS   AGE
nfs-client-provisioner-6d4469b5b5-bh6t9   1/1     Running   0          73m

5.列出你的集群中的StorageClass

kubectl get storageclass
NAME                      PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
managed-nfs-storag        fuseim.pri/ifs   Delete          Immediate           false                  77m

6.标记一个StorageClass为默认的 (是storageclass的名字也就是你部署的StorageClass名字是啥就写啥)

kubectl patch storageclass <your-class-name> -p ‘{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}‘

7.验证你选用为默认的StorageClass

kubectl get storageclass
NAME                            PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
managed-nfs-storage (default)   fuseim.pri/ifs   Delete          Immediate           false                  77m

k8s基于NFS部署storageclass实现pv并标记为一个默认的StorageClass

原文:https://www.cnblogs.com/lfl17718347843/p/14131062.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!