• kubernetes 数据持久化之Glusterfs


    1、GlusterFS  部署过程请参考上篇文章

    2、配置endpoints

    [root@manager ~]# cat glusterfs-endpoints.json 
    {
      "kind": "Endpoints",
      "apiVersion": "v1",
      "metadata": {
        "name": "glusterfs-cluster"
      },
      "subsets": [
        {
          "addresses": [
            {
              "ip": "192.168.10.223"
            }
          ],
          "ports": [
            {
              "port": 1
            }
          ]
        },
        {
          "addresses": [
            {
              "ip": "192.168.10.224"
            }
          ],
          "ports": [
            {
              "port": 1
            }
          ]
        },
        { 
          "addresses": [
            {
              "ip": "192.168.10.225"
            }
          ],
          "ports": [
            {
              "port": 1
            }
          ]
        }
      ]
    }

    [root@manager ~]# kubectl create -f glusterfs-endpoints.json
    endpoints "glusterfs-cluster" created
    [root@manager ~]#
    [root@manager ~]# kubectl get ep
    NAME ENDPOINTS AGE
    glusterfs-cluster 192.168.10.223:1,192.168.10.224:1,192.168.10.225:1 6s
    kubernetes 192.168.10.220:6443 5d

     

    3、创建service

    [root@manager ~]# cat glusterfs-service.yaml 
    {
      "kind": "Service",
      "apiVersion": "v1",
      "metadata": {
        "name": "glusterfs-cluster"
      },
      "spec": {
        "ports": [
          {"port": 1}
        ]
      }
    }
    [root@manager ~]# 
    [root@manager ~]# 
    [root@manager ~]# kubectl create -f glusterfs-service.yaml 
    service "glusterfs-cluster" created
    [root@manager ~]# 
    [root@manager ~]# kubectl get svc
    NAME                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    glusterfs-cluster   ClusterIP   10.10.10.194   <none>        1/TCP     7s
    kubernetes          ClusterIP   10.10.10.1     <none>        443/TCP   5d

    4、创建测试pod

    [root@manager ~]# cat glusterfs-pod.yaml 
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - name: glusterfsvol
              mountPath: /usr/share/nginx/html
            ports:
            - containerPort: 80
          volumes:
          - name: glusterfsvol
            glusterfs:
              endpoints: glusterfs-cluster
              path: gv0
              readOnly: false
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      selector:
        app: nginx
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 80
      type: NodePort


    [root@manager ~]# kubectl create -f glusterfs-pod.yaml
    deployment "nginx-deployment" created
    service "nginx-service" created

    [root@manager ~]# kubectl describe pod nginx-deployment-6f6f9646c4-84bbr
    Name: nginx-deployment-6f6f9646c4-84bbr
    Namespace: default
    Node: 192.168.10.221/192.168.10.221
    Start Time: Mon, 05 Feb 2018 14:31:54 +0800
    Labels: app=nginx
    pod-template-hash=2929520270
    Annotations: kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"nginx-deployment-6f6f9646c4","uid":"41758808-0a3e-11e8-af8c-5254...
    Status: Running
    IP: 10.0.91.5
    Created By: ReplicaSet/nginx-deployment-6f6f9646c4
    Controlled By: ReplicaSet/nginx-deployment-6f6f9646c4
    Containers:
    nginx:
    Container ID: docker://d7714c067d2c1ac115336715eb66235ee9153632eab2019c174b0384c0b04e8f
    Image: nginx
    Image ID: docker-pullable://nginx@sha256:285b49d42c703fdf257d1e2422765c4ba9d3e37768d6ea83d7fe2043dad6e63d
    Port: 80/TCP
    State: Running
    Started: Mon, 05 Feb 2018 14:32:34 +0800
    Ready: True
    Restart Count: 0
    Environment: <none>
    Mounts:
    /usr/share/nginx/html from glusterfsvol (rw)
    Conditions:
    Type Status
    Initialized True
    Ready True
    PodScheduled True
    Volumes:
    glusterfsvol:
    Type: Glusterfs (a Glusterfs mount on the host that shares a pod's lifetime)
    EndpointsName: glusterfs-cluster
    Path: gv0
    ReadOnly: false
    QoS Class: BestEffort
    Node-Selectors: <none>
    Tolerations: <none>
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal Scheduled 42s default-scheduler Successfully assigned nginx-deployment-6f6f9646c4-84bbr to 192.168.10.221
    Normal SuccessfulMountVolume 41s kubelet, 192.168.10.221 MountVolume.SetUp succeeded for volume "glusterfsvol"
    Normal Pulling 40s kubelet, 192.168.10.221 pulling image "nginx"
    Normal Pulled 2s kubelet, 192.168.10.221 Successfully pulled image "nginx"
    Normal Created 2s kubelet, 192.168.10.221 Created container
    Normal Started 2s kubelet, 192.168.10.221 Started container

    [root@manager ~]# kubectl exec nginx-deployment-6f6f9646c4-84bbr mount|grep gluster
    192.168.10.223:gv0 on /usr/share/nginx/html type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)

     

    root@nginx-deployment-6f6f9646c4-84bbr:/usr/share/nginx/html# echo abc > 2.txt

    [root@glusterfs1 brick1]# cat 2.txt
    abc
    [root@glusterfs1 brick1]# echo 33333 > 3.txt

    5、注意事项:

    5.1、k8s集群配置glusterfs集群主机名接卸

    5.2、k8s集群配置glusterfs  客户端挂载工具 

    [root@node1 ~]# yum install centos-release-gluster -y

    [root@node1 ~]# yum install glusterfs-fuse -y

  • 相关阅读:
    C++ SDL2事件处理
    C++ SDL_Image配置
    C++ TinyXML库读写XML
    C++ libcurl库使用
    C++ 配置使用libcurl
    C++ 正则使用
    C++使用cJSON
    Vue通过状态为页面切换添加loading、为ajax加载添加loading
    移动端真机调试工具--DebugGap (VIDE)
    new Date(str)返回的时间结果在移动端比PC端快了8小时
  • 原文地址:https://www.cnblogs.com/hellojackyleon/p/8417518.html
Copyright © 2020-2023  润新知