Docker 无法在glusterfs上运行卷为的容器

Docker 无法在glusterfs上运行卷为的容器,docker,kubernetes,glusterfs,Docker,Kubernetes,Glusterfs,我有一个kubernetes集群,它有一个主节点和3个仆从,我已经有了一个glusterfs集群,kubernetes集群的每个节点都安装了glusterfs客户机并开始工作。 我试图在glusterfs上运行一个pod(一个简单的mysql)挂载/var/lib/mysql,但我看到: Image: mysql:5.6 is ready, container is creating 我运行: kubectl get事件 我明白了: 如果我跑 kubectl描述了mysql-9ym10吊舱

我有一个kubernetes集群,它有一个主节点和3个仆从,我已经有了一个glusterfs集群,kubernetes集群的每个节点都安装了glusterfs客户机并开始工作。 我试图在glusterfs上运行一个pod(一个简单的mysql)挂载/var/lib/mysql,但我看到:

Image: mysql:5.6 is ready, container is creating 
我运行: kubectl get事件 我明白了:

如果我跑 kubectl描述了mysql-9ym10吊舱 我明白了:

这是容器的yaml文件:

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      name: mysql
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.6
        ports:
        - containerPort: 3306
        env:
          - name: MYSQL_ROOT_PASSWORD
            value: password
        volumeMounts:
          - mountPath: /var/lib/mysql
            name: glusterfsvol
      volumes:
      - glusterfs:
          endpoints: glusterfs-cluster
          path: glustervolume
          readOnly: false
        name: glusterfsvol

您需要配置端点,否则kubernetes不知道如何访问您的gluster集群

我有一个配置了glusterfs ip地址的和端点


我知道发布的链接,我已经关注了它,但结果是在我的第一篇文章

首先:要使用GlusterFS,不需要在kubernetes节点上安装GlusterFS客户端。默认情况下,Kubernetes具有glusterfs的卷装载选项

要使用glusterfs和kubernetes,您需要了解一些事情

  • 正在工作的glusterfs服务器。glusterfs服务器中正在运行的卷。我想你有。如果任何人不这样做,则创建glusterfs服务器并使用以下命令启动卷

    $ gluster volume create <volume-name> replica 2 transport tcp \
      peer1:/directory \
      peer2:/directory \
      force
    $ gluster volume start <vonlume-name>
    $ sudo gluster volume info
    
  • 在第三个点,将gfs卷安装到带有端点的吊舱中

          containers:
          - name: mysql
            image: mysql:5.6
            ports:
            - containerPort: 3306
            env:
              - name: MYSQL_ROOT_PASSWORD
                value: password
            volumeMounts:
              - mountPath: /var/lib/mysql
                name: glusterfsvol
          volumes:
          - glusterfs:
               endpoints: glusterfs-cluster
               path: <volume-name>
             name: glusterfsvol
    
    容器:
    -名称:mysql
    图片:mysql:5.6
    端口:
    -集装箱港口:3306
    环境:
    -名称:MYSQL\u ROOT\u密码
    值:密码
    体积数量:
    -mountPath:/var/lib/mysql
    名称:glusterfsvol
    卷数:
    -glusterfs:
    端点:glusterfs群集
    路径:
    名称:glusterfsvol
    
  • **路径必须与卷名和glusterfs匹配


    这一切都应该可以正常工作。

    我有所有这些配置,还有奴才上的glusterfs客户端。在端点上,我将尝试修改配置,但非常相似…我将尽快更新。谢谢。请用卷名检查路径。并检查vloume状态。如果调用gluster端点gluster,pod上端点的名称必须匹配!我也有同样的问题。我甚至成功地手动在kubernetes节点上挂载了glusterfs卷
    mount-t glusterfs gluster节点ip:glustervolume/mnt
    ,但它仍然没有挂载在上面配置的pod中。好吧,在我发布这篇文章5分钟后,我成功地让它工作。我的本地kubernetes环境基于vagrant部署(基于Fedora23)。minikube部署基于boot2docker,它基于Tiny Linux,据我所知,Tiny Linux没有打包的glusterfs客户端。所以minikube不会和glusterfs一起工作。
    $ gluster volume create <volume-name> replica 2 transport tcp \
      peer1:/directory \
      peer2:/directory \
      force
    $ gluster volume start <vonlume-name>
    $ sudo gluster volume info
    
    kind: Endpoints
    apiVersion: v1
    metadata:
      name: glusterfs
    subsets:
    - addresses:
      - ip: peer1
      ports:
      - port: 1
    - addresses:
      - ip: peer2
      ports:
      - port: 1
    
          containers:
          - name: mysql
            image: mysql:5.6
            ports:
            - containerPort: 3306
            env:
              - name: MYSQL_ROOT_PASSWORD
                value: password
            volumeMounts:
              - mountPath: /var/lib/mysql
                name: glusterfsvol
          volumes:
          - glusterfs:
               endpoints: glusterfs-cluster
               path: <volume-name>
             name: glusterfsvol