2016-02-19 49 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