簡體   English   中英

在kubernetes + coreos中掛載RDB卷

[英]Mount RDB volumes in kubernetes + coreos

我正在嘗試在CoreOS下由kubernetes創建的pod中安裝ceph RDB卷。

  • CoreOS版本是beta (1153.4.0)
  • Hyperkube版本是v1.3.7+coreos.0
  • ceph版本是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
        }
      }
    ]
  }
}

如果我啟動此Pod,則會創建它,但保持其狀態: ContainerCreating

問題在於pod似乎無法創建rbd設備。

如果我連接到已部署Pod的節點,並使用rbdmap命令在主機上創建rbd設備(在主機上),則該設備已創建,並且Pod可以裝載該卷。 然后,窗格的狀態切換為“正在Running

如果我刪除Pod,則rbd設備會自動刪除。

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

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

kubelet包裝器的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM