2016-09-21 77 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