zoukankan      html  css  js  c++  java
  • k8s基于NFS部署storageclass实现pv并标记为一个默认的StorageClass

    架构:

    一. 搭建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/volumes/v1  192.168.200.0/24(rw,no_root_squash)
    /data/volumes/v2  192.168.200.0/24(rw,no_root_squash)
    /data/volumes/v3  192.168.200.0/24(rw,no_root_squash)
    

    发布:exportfs -avr

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

    查看:showmount -e

    /data/volumes/v3 192.168.200.0/24
    /data/volumes/v2 192.168.200.0/24
    /data/volumes/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 .
    

    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-storage        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
    
  • 相关阅读:
    H5版俄罗斯方块(5)---需求演进和产品迭代
    vim 常用 NERDTree 快捷键
    C和C++中include 搜索路径的一般形式以及gcc搜索头文件的路径
    MySQL复制协议
    深入解析MySQL replication协议
    Install CodeBlocks in CentOS 7
    Impala 源码分析-FE
    Elasticsearch 6.x 的分页查询数据
    1、树莓派3B开箱+安装系统
    Python创建ES索引
  • 原文地址:https://www.cnblogs.com/lfl17718347843/p/14131062.html
Copyright © 2011-2022 走看看