【问题标题】:Mount RDB volumes in kubernetes + coreos在 kubernetes + coreos 中挂载 RDB 卷
【发布时间】:2016-09-23 01:14:25
【问题描述】:

我正在尝试在 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 可以挂载卷。然后pod的状态切换到Running

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

继续,可能是什么问题导致 kubernetes 无法创建 rbd 设备。

【问题讨论】:

    标签: kubernetes coreos ceph


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2020-08-07
      • 2019-08-24
      • 2021-10-26
      • 2019-10-09
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 2023-03-18
      相关资源
      最近更新 更多