无法在glusterfs上运行容器

我有一个主节点和3个爪子的kubernetes集群,我已经有一个glusterfs集群,kubernetes集群的每个节点都安装了glusterfs-client并且正在工作。 我想在glusterfs上运行一个pod(一个简单的mysql)挂载/ var / lib / mysql,但是我看到:

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 

我有和端点configuration了glusterfs ip地址。

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

首先:要使用GlusterFS,您不需要在kubernetes节点上安装glusterfs-client。 Kubernetes默认具有glusterfs的音量安装选项。

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

  1. 一个工作的glusterfs服务器。 glusterfs服务器中的运行卷。 我假设你有这些。 如果有人不这样做,那么创build一个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端点来与pod一起使用。 作为一个例子,终点是这样的。

     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 

**path必须与glusterfs的卷名匹配。

这一切应该正常工作。

您需要configuration端点https://github.com/kubernetes/kubernetes/blob/release-1.1/examples/glusterfs/README.md ,否则kubernetes不知道如何访问您的gluster群集。