0

我正在尝试使用此处的指令在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 容器中,但这对我没有帮助。

4

2 回答 2

1

看起来他们不会将其默认添加到 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如果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 集群上运行。

于 2018-09-24T11:00:14.850 回答
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 --卷=iscsid,种类=主机,源=/usr/sbin/iscsid --mount 卷=iscsid,目标=/usr/sbin/iscsid

  • sudo modprobe iscsi_tcp

提前初始化 tcp 模块,因为它需要ascsiadm。但是 CoreOS 会“按需”加载模块,并且由于某些原因,它在 rkt 容器中不起作用。

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

至少需要一些启动器名称。

我还填补CoreOS 中的错误,也许存在更好的解决方法。

于 2016-06-20T14:11:04.797 回答