3

docker -multinode 構成と Ceph クラスターを使用して Kubernetes クラスターを正常にデプロイし、以下を使用して CephFS デバイスを手動でマウントできます。

sudo mount -t ceph monitor1:6789:/ /ceph -o name=admin,secretfile=/etc/ceph/cephfs.secret

ここで kubernetes の例を使用してポッドを起動しようとしています:

apiVersion: v1
kind: Secret
metadata:
  name: ceph-secret
data:
  key: my-ceph-secret-key
---
apiVersion: v1
kind: Pod
metadata:
  name: cephfs2
spec:
  containers:
  - name: cephfs-rw
    image: kubernetes/pause
    volumeMounts:
    - mountPath: "/mnt/cephfs"
      name: cephfs
  volumes:
  - name: cephfs
    cephfs:
      monitors:
      - "monitor1:6789"
      - "monitor2:6789"
      - "monitor3:6789"
      user: admin
      secretRef:
        name: ceph-secret
      readOnly: false

私が実行すると:

sudo kubectl create -f cephfs.yml

次のエラーが表示されます。

ボリューム "kubernetes.io/cephfs/445ee063-d1f1-11e6-a3e3-1418776a29a6-cephfs" (仕様名: "cephfs") ポッド "445ee063-d1f1-11e6-a3e3-1418776a29a6" (UID : "445ee063-d1f1-11e6-a3e3-1418776a29a6") with: CephFS: マウントに失敗しました: マウントに失敗しました: fork/exec /bin/mount: 無効な引数 マウント引数: monitor1:6789,monitor2:6789,monitor3:6789:/data /var/lib/kubelet/pods/445ee063-d1f1-11e6-a3e3-1418776a29a6/volumes/kubernetes.io~cephfs/cephfs ceph [name=admin,secret=secret]

正常にマウントするには、kubernetes マネージャー コンテナーに ceph-fs-common パッケージをインストールする必要がありますか? エラーの原因を特定するためのデバッグ情報が見つかりません。

4

2 に答える 2

2

知る限り、ここで 2 つの問題が発生する可能性があります。

  • Ceph が機能するには、マシンの IP アドレスが必要でした
  • コンテナーを実行している OS は、ストレージをマウントする OS です。そのマシンに ceph ツールをインストールする必要があります。コンテナは、マウントされたディスクをまったく認識しません
于 2017-01-03T22:15:30.403 に答える
0

Kubernetes で CephFS ボリュームを正常にマウントするために修正が必要な問題がいくつかありました。kube-deploy docker マルチノード構成を使用して Kubernetes 1.4.6 をデプロイしたことに注意してください。

問題 #1: Kubernetes シークレットを使用するとマウント コマンドが失敗する

上記のエラーを詳しく調べると、Kubernetes が Ceph シークレットを改行として解釈される文字で暗号化していることがわかりました。その結果、ファイル システムをマウントしようとすると、kubelet が失敗します。

secretfile回避策として、Kubernetes の代わりにCeph を使用するように YAML を構成しましたsecret

apiVersion: v1
kind: Pod
metadata:
  name: cephfs-test
spec:
  containers:
  - name: cephfs-rw
    image: kubernetes/pause
    volumeMounts:
    - mountPath: "/mnt/cephfs"
      name: cephfs
  volumes:
  - name: cephfs
    cephfs:
      monitors:
      - "<monitor1>:6789"
      - "<monitor2>:6789"
      - "<<monitor3>:6789"
      user: admin
      # Omit for CephFS mounting error
      # secretRef:
      #   name: ceph-secret
      secretFile: "/etc/ceph/user.secret"
      readOnly: false

問題 #2: Kubelet に Ceph パッケージと構成がありません

ceph-fs-commonkubelets には、CephFS ボリュームをコンテナーにマウントするために必要なパッケージとceph-common、必要な構成ファイルがすべて不足していました。次のスクリプトは、kubelet マスター/ワーカー エージェントに必要な更新を適用する必要があります。

docker exec $KUBELET_ID apt-get update
docker exec $KUBELET_ID apt-get install -y wget lsb-release apt-transport-https
docker exec $KUBELET_ID /bin/bash -c "wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -"
RELEASE=$(docker exec $KUBELET_ID lsb_release -sc)
docker exec $KUBELET_ID /bin/bash -c "echo deb https://download.ceph.com/debian-jewel/ $RELEASE main | tee /etc/apt/sources.list.d/ceph.list"
docker exec $KUBELET_ID apt-get update
docker exec $KUBELET_ID apt-get install -y ceph-fs-common ceph-common

docker exec $KUBELET_ID mkdir -p /etc/ceph
docker exec $KUBELET_ID /bin/bash -c "echo $CEPH_SECRET > /etc/ceph/admin.secret"

完全な要旨はこちら

于 2017-01-06T17:43:41.957 に答える