美文网首页
k8s 中使用 glusterfs 做存储

k8s 中使用 glusterfs 做存储

作者: Robin92 | 来源:发表于2022-05-04 17:51 被阅读0次

    前面我们用了 nfs 做 pv,可以通过 kubectl explain pv.spec 查看支持的字段,其中包含 nfs、glusterfs,通过 kubectl explain pv.spec.glusterfs 查看 glusterfs 支持的选项

       endpoints    <string> -required- # gfs 入口终端(IP:PORT) 
       path <string> -required- # gfs 的路径
       readOnly <boolean> # 是否只读
    

    创建 ep

    apiVersion: v1
    kind: Endpoints # 可通过 kubectl get ep 查看
    metadata:
      name: glusterfs
      namespace: default
    subsets:
      - addresses: # glasterfs 结点的所有 IP
        - ip: 192.168.208.130 
        - ip: 192.168.208.131
        - ip: 192.168.208.129
        ports:
        - port: 49152 # gfs 默认开启的端口,通过 netstat -lntup 查看
          protocol: TCP
    
    查看 ep

    创建 svc

    kind: Service
    apiVersion: v1
    metadata:
      name: glusterfs # 需要和 endpoints 的名字一致,靠名字关联
      namespace: default
    spec:
      type: ClusterIP
      ports:
      - port: 49152
        targetPort: 49152
        protocol: TCP 
      sessionAffinity: None
    
    svc 关联到了 ep

    注意:

    • svc 和 ep 是通过 metadata.name 进行关联的。
    • ep.subsets[].ports[].name 如果有设置的话,会导致 svc 关联不上,可能是用其他方式关联。

    创建 pv/pvc

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: gluster
    spec:
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteMany
      glusterfs:
        path: "test-gfs" # 路径就是卷的名字,通过 gluster volume list 查看
        endpoints: "glusterfs" # ep 资源名
        readOnly: false
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: gluster
    spec:
      resources:
        requests:
          storage: 20Gi # 注意会找合适的最小的容量进行绑定
      accessModes:
        - ReadWriteMany
    

    kubectl create -f k8s/gfs/gfs-pv-pvc.yml 创建之后:

    pv/pvc 绑定关系

    pod 使用 gluster pv/pvc

    更改上次使用的 pv和pvc存储 - 创建 pv 部分的 deployment 资源配置文件

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: fs-deployment
    spec:
      revisionHistoryLimit: 0
      replicas: 3
      template:
        metadata:
          labels:
            app: fs-svr 
        spec:
          containers:
            - name: fs-svr 
              resources:
                limits:
                  memory: "128Mi"
                  cpu: "500m"
              image: 192.168.208.130:5000/fs-svr:0.0.1
              args: ["-p", "9000", "-d", "/data/gfs"] # 更改程序运行的参数:文件目录
              ports:
                - containerPort: 9000
              volumeMounts:
                - name: fsdata         # 绑定 pod 定义的 volumes
                  mountPath: /data/gfs # 本地目录
          volumes: # 定义 pod 内使用的卷
            - name: fsdata             # 自定义一个名称,必须小写,用于 containers[].volumeMounts[].name
              persistentVolumeClaim:   # 
                claimName: gluster     # 使用的 pvc 的名字
    

    注意:
    k8s 中的 kubectl explain deployment.spec.template.spec.containers.command 对应是 docker 的 ENTRYPOINT,args 对应 docker 的 CMD。

    更改成功后,可通过浏览器界面查看目录,通过 postman 上传文件。

    浏览器界面查看 容器内查看 glusterfs brick 中查看

    在 node 使用 kubectl

    在当前 1.5.2 版本,可以使用 kubectl -s <ip:port> get nodes 进行访问

    node结点使用 kubectl

    只更新镜像的命令

    kubectl set image deploy fs-deployment fs-svr=192.168.208.130:5000/fs-svr:0.0.2
    # kubectl set image deploy <deploy_name> <container_name>=<image:version>
    

    当前版本下 kubectl set 后面支持两种资源,imageresources(镜像或资源申请/限制)

    相关文章

      网友评论

          本文标题:k8s 中使用 glusterfs 做存储

          本文链接:https://www.haomeiwen.com/subject/tqqwyrtx.html