无法在CoreOS上的rkt容器内启动iscsiadm

时间:2016-06-20 11:57:19

标签: kubernetes coreos iscsi openebs rkt

我试图使用instruction here在CoreOS上的rkt内部使用iscsi插件启动kubernetes。问题是iscsi守护程序无法启动,因此我收到错误并且无法将卷装入pod。

iscsi_util.go:112] iscsi: failed to sendtargets to portal 156.64.48.59:3260 
    error: iscsiadm: Failed to load module tcp: No such file
iscsiadm: Could not load transport tcp.Dropping interface default.
[disk_manager.go:50] failed to attach disk 
iscsi: failed to setup
kubelet.go:1780] Unable to mount volumes for pod ...

我试图将整个/ dev /挂载到rkt容器中,但它对我没有帮助。

2 个答案:

答案 0 :(得分:1)

要获得一个有效的解决方案,我必须:

  • 将RKT选项更改为

    RKT_OPTS = - volume = iscsiadm,kind = host,source = / usr / sbin / iscsiadm --mount volume = iscsiadm,target = / usr / sbin / iscsiadm --volume = resolv,kind = host,source = /etc/resolv.conf --mount volume = resolv,target = / etc / resolv.conf --volume = etcs,kind = host,source = / etc / iscsi / --mount volume = etcs,target = / etc / iscsi --volume = iscsid,kind = host,source = / usr / sbin / iscsid --mount volume = iscsid,target = / usr / sbin / iscsid

  • echo "InitiatorName=iqn.2001-12.com.mycompany:volume.openiscsi-initiator" > /etc/iscsi/initiatorname.iscsi

提前初始化tcp模块,因为it needed用于ascsiadm。但CoreOS加载模块“as-needed”,并且由于某些原因它在rkt容器内不起作用。

  • ^(?!www$)[a-z0-9]+([.-][a-z0-9]+)*$ ^^^^^^^^

至少有一些发起人名称is needed

我还在CoreOS中填写the bug,也许存在更好的解决方法。

答案 1 :(得分:0)

看起来他们不会将其默认添加到CoreOS中,但是您可以将其添加到点火配置中。 iscsid-initiatorname.service将为您创建名称。

  "storage": {
    "files": [{
      "filesystem": "root",
      "path": "/etc/modules-load.d/iscsi_tcp.conf",
      "contents": { "source": "data:iscsi_tcp" },
      "mode": 420
    }]
  },
  "systemd": {
    "units": [{
        "enable": true,
        "name": "iscsid-initiatorname.service"
    }]
  }

这仅适用于全新安装或全新的根磁盘,因此请创建文件,执行modprode iscsi_tcp,如果您不想以干净的root开头,请执行systemctl start iscsid-initiatorname.service

然后,如果您使用的是Kubernetes,则只需设置卷映射:

  kubelet:
    extra_args:
      feature-gates: MountPropagation=true

    extra_binds:
      - /usr/sbin/iscsiadm:/usr/sbin/iscsiadm
      - /usr/sbin/iscsid:/usr/sbin/iscsid
      - /etc/iscsi/:/etc/iscsi/

这使OpenEBS可以在我的裸机CoreOS集群上工作。