Can't start iscsiadm inside rkt container on CoreOS Can't start iscsiadm inside rkt container on CoreOS kubernetes kubernetes

Can't start iscsiadm inside rkt container on CoreOS


To get a working solution I had to:

  • Change RKT options to

    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

  • sudo modprobe iscsi_tcp

Initialize tcp module in advance because it needed for ascsiadm. But CoreOS loads modules "as-needed" and by some reasons it doesn't work inside rkt container.

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

At least some initiator name is needed.

I also filled the bug in CoreOS, maybe a better workaround exists.


It doesn't look like they'll add it default into CoreOS but you can add it in the ignition config. The iscsid-initiatorname.service will create the name for you.

  "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"    }]  }

This only works on a fresh install or fresh root disk so create the file, do modprode iscsi_tcp, and do systemctl start iscsid-initiatorname.service if you don't want to start with clean root.

Then if you're using kubernetes just setup the volume mappings:

  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/

This got OpenEBS working on my baremetal CoreOS cluster.