1

マスター ノードと 3 つのミニオンを備えた kubernetes クラスターがあります。既に glusterfs クラスターがあり、kubernetes クラスターのすべてのノードには glusterfs-client がインストールされ、動作しています。glusterfs に /var/lib/mysql をマウントするポッド (単純な mysql ) を実行しようとしていますが、次のように表示されます。

Image: mysql:5.6 is ready, container is creating 

私は実行します: kubectl get event 私が見る:

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 describe pod 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
4

3 に答える 3

1

最初に: GlusterFS を使用するには、kubernetes ノードに glusterfs-client をインストールする必要はありません。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. そして 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 を一致させる必要があります。

これですべてうまくいくはずです。

于 2016-02-25T09:57:45.943 に答える
1

glusterfs の IP アドレスで構成されたエンドポイントがあります。

私は投稿されたリンクを知っています、私はそれをたどりましたが、結果は私の最初の投稿にあります!

于 2016-02-21T11:29:36.533 に答える
0

エンドポイントhttps://github.com/kubernetes/kubernetes/blob/release-1.1/examples/glusterfs/README.mdを構成する必要があります。そうしないと、kubernetes は gluster クラスターにアクセスする方法を知りません。

于 2016-02-21T10:43:19.670 に答える