2016-02-19 26 views
1

量运行的容器我曾与一个主节点和3个爪牙一个kubernetes集群,我已经一个glusterfs集群,kubernetes群集的每个节点都安装glusterfs客户端和工作。 我试图运行一个POD(一个简单的MySQL)安装在/ var/lib中/ MySQL在glusterfs但我看到:无法与glusterfs

Image: mysql:5.6 is ready, container is creating 

我运行: kubectl得到事件 我看到:

Thu, 18 Feb 2016 10:08:01 +0100 Thu, 18 Feb 2016 10:08:01 +0100 1   mysql-9ym10   Pod         scheduled   {scheduler }    Successfully assigned mysql-9ym10 to nodeXX 
Thu, 18 Feb 2016 10:08:01 +0100 Thu, 18 Feb 2016 10:08:01 +0100 1   mysql    ReplicationController    successfulCreate {replication-controller } Created pod: mysql-9ym10 
Thu, 18 Feb 2016 10:08:02 +0100 Thu, 18 Feb 2016 10:08:12 +0100 2   mysql-9ym10   Pod         failedMount  {kubelet nodeXX} Unable to mount volumes for pod "mysql-9ym10_default": exit status 1 
Thu, 18 Feb 2016 10:08:02 +0100 Thu, 18 Feb 2016 10:08:12 +0100 2   mysql-9ym10   Pod         failedSync   {kubelet nodeXX} Error syncing pod, skipping: exit status 1 

如果我跑 kubectl描述荚的mysql-9ym10 我看到:

Name:       mysql-9ym10 
Namespace:      default 
Image(s):      mysql:5.6 
Node:       nodeXX/nodeXX 
Labels:       app=mysql 
Status:       Pending 
Reason: 
Message: 
IP: 
Replication Controllers:  mysql (1/1 replicas created) 
Containers: 
    mysql: 
    Image:    mysql:5.6 
    State:    Waiting 
     Reason:   Image: mysql:5.6 is ready, container is creating 
    Ready:    False 
    Restart Count:  0 
Conditions: 
    Type   Status 
    Ready   False 
Events: 
    FirstSeen        LastSeen      Count From       SubobjectPath Reason   Message 
    Thu, 18 Feb 2016 10:08:01 +0100  Thu, 18 Feb 2016 10:08:01 +0100 1  {scheduler }         scheduled  Successfully assigned mysql-9ym10 to nodeXX 
    Thu, 18 Feb 2016 10:08:02 +0100  Thu, 18 Feb 2016 10:10:22 +0100 15  {kubelet nodeXX}      failedMount  Unable to mount volumes for pod "mysql-9ym10_default": exit status 1 
    Thu, 18 Feb 2016 10:08:02 +0100  Thu, 18 Feb 2016 10:10:22 +0100 15  {kubelet nodeXX}      failedSync  Error syncing pod, skipping: exit status 1 

这是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 

回答

1

我得和端点配置有glusterfs IP地址。

我知道张贴链接,我一直跟着它,但结果是我的第一篇文章!

+0

我有同样的问题。我甚至用手'mount -t glusterfs gluster-node-ip:glustervolume/mnt'成功地在一个kubernetes节点上挂载了一个glusterfs卷,但它仍然没有安装在上面配置的pod中。 – markop

+0

好吧,5分钟后,我发布了这个我确实设法让它工作。我的本地kubernetes环境基于流浪部署(基于Fedora23)。 minikube部署基于boot2docker,它基于Tiny Linux,据我所知,它没有打包的glusterfs-client。所以minikube不适用glusterfs。 – markop

1

在第一:要使用你不需要kubernetes节点上安装glusterfs-客户端GlusterFS。 Kubernetes默认具有glusterfs的批量安装选项。

要使用你需要的东西kubernetes一个glusterfs。

  1. 一个工作的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 
    
  2. 如果这是确定的,你需要一个kubernetes端点与吊舱使用。作为一个例子,终点是这样的。

    kind: Endpoints 
    apiVersion: v1 
    metadata: 
        name: glusterfs 
    subsets: 
    - addresses: 
        - ip: peer1 
        ports: 
        - port: 1 
    - addresses: 
        - ip: peer2 
        ports: 
        - port: 1 
    
  3. 然后在第三个将gfs卷挂载到一个带有终点的pod上。

     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 
    

**的路径必须卷名称与glusterfs匹配。

这一切应该正常工作。

+0

我已经拥有了所有这些配置,还有glusterfs客户端。 在端点上,我会尝试修改配置,但非常相似...我会尽快更新。 谢谢。 – bitchecker

+0

检查具有卷名称的路径。并捍卫自己的地位。 – sadlil

+1

如果您调用gluster端点GLUSTER,则在pod上端点的名称必须匹配! – bitchecker