2016-09-21 38 views
0

我試圖在CoreOS下通過kubernetes創建的pod掛載一個ceph RDB卷。在kubernetes + coreos中掛載RDB卷

  • CoreOS版本beta (1153.4.0)
  • Hyperkube版本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設備。

如果我連接到已部署pod的節點,並使用rbdmap命令創建rbd設備(在主機上),則該設備將創建,並且該pod可以掛載該卷。然後,該吊艙的狀態切換到Running

如果我刪除該吊艙,rbd設備會自動刪除。

要恢復,可能會導致kubernetes無法創建rbd設備的問題。

回答

1

如果您使用CoreOS kubelet-wrapper腳本啓動kubelet,則應該可以通過添加一些額外的掛載點來使用rbd設備。

的RKT_OPTS爲kubelet-包裝器的示例控制裝置:

[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