0

CoreOS の下で kubernetes によって作成されたポッドに ceph RDB ボリュームをマウントしようとしています。

  • CoreOS のバージョンはbeta (1153.4.0)
  • ハイパーキューブ版はv1.3.7+coreos.0
  • セフバージョンはjewel

このPODを使用していますか:

{
  "apiVersion": "v1",
  "kind": "Pod",
  "metadata": {
    "name": "rbd2"
  },
  "spec": {
    "containers": [
      {
        "name": "rbd-rw",
        "image": "nginx",
        "volumeMounts": [
          {
            "mountPath": "/mnt/rbd",
            "name": "rbdpd"
          }
        ]
      }
    ],
    "volumes": [
      {
        "name": "rbdpd",
        "rbd": {
          "monitors": [
            "10.203.69.254"
          ],
          "pool": "rbd",
          "image": "foo",
          "user": "admin",
          "secretRef": {
            "name": "ceph-secret"
          },
          "fsType": "ext4",
          "readOnly": true
        }
      }
    ]
  }
}

このポッドを開始すると、作成されますが、ステータスのままになります。ContainerCreating

問題は、ポッドが rbd デバイスを作成できないように見えることです。

ポッドがデプロイされているノードに接続し、rbdmapコマンドで (ホスト上に) rbd デバイスを作成すると、デバイスが作成され、ポッドはボリュームをマウントできます。次に、Pod のステータスが次のように切り替わりますRunning

ポッドを削除すると、rbd デバイスが自動的に削除されます。

再開するには、kubernetes が rbd デバイスを作成できない原因となる可能性のある問題を教えてください。

4

1 に答える 1

1

CoreOS kubelet-wrapper スクリプトを使用して kubelet を起動している場合は、マウント ポイントをいくつか追加することで rbd デバイスを使用できるはずです。

kubelet-wrapper の RKT_OPTS のオーバーライドの例:

[Service]
Environment="RKT_OPTS=--volume modprobe,kind=host,source=/usr/sbin/modprobe \
--mount volume=modprobe,target=/usr/sbin/modprobe \
--volume lib-modules,kind=host,source=/lib/modules \
--mount volume=lib-modules,target=/lib/modules \
Environment=KUBELET_VERSION=v1.3.7_coreos.0
...

出典: kubelet-wrapper rbd docs .

于 2016-09-22T17:14:25.200 に答える