在kubernetes + coreos中安装RDB卷

时间:2016-09-21 14:12:40

标签: kubernetes coreos ceph

我试图在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
        }
      }
    ]
  }
}

如果我启动此广告连播已创建,但保持状态:ContainerCreating

问题是pod似乎无法创建rbd设备。

如果我连接到已部署pod的节点并使用rbdmap命令在主机上创建rbd设备,则设备将创建,并且pod可以安装卷。然后,广告连播的状态将切换为Running

如果我删除了pod,则会自动删除rbd设备。

要恢复,可能导致kubernetes无法创建rbd设备的问题。

1 个答案:

答案 0 :(得分: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