-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
kind
should be able to start the control plane when /dev/kmsg
is not available
#662
Comments
maybe related: #455 |
We should definitely try to tolerate environments, I'm a bit curious how your system doesn't have a /dev/kmsg though and if these are really comparable. Taking a look... |
|
what does |
... so it is not completely uncommon. 🤷♂️ |
interesting, thanks! that works for me :-) |
fixed in #664 |
thanks! |
THe current approach to link `/dev/kmsg` to `/dev/console` only works on images that we build ourselves. Let's see if we can mess with the running container and create the link at runtime / on the fly. As this is fixed in kind already [0], we can remove that hack probably when kind 0.5.0 is out. Why is this linking even needed? See also [0]! [0]: kubernetes-sigs/kind#662
THe current approach to link `/dev/kmsg` to `/dev/console` only works on images that we build ourselves. Let's see if we can mess with the running container and create the link at runtime / on the fly. As this is fixed in kind already [0], we can remove that hack probably when kind 0.5.0 is out. Why is this linking even needed? See also [0]! [0]: kubernetes-sigs/kind#662
THe current approach to link `/dev/kmsg` to `/dev/console` only works on images that we build ourselves. Let's see if we can mess with the running container and create the link at runtime / on the fly. As this is fixed in kind already [0], we can remove that hack probably when kind 0.5.0 is out. Why is this linking even needed? See also [0]! [0]: kubernetes-sigs/kind#662
The previous approach to link `/dev/kmsg` to `/dev/console` only works on images that we build ourselves. Let's see if we can mess with the running container and create the link at runtime / on the fly. As this is fixed in kind already [0], we can remove that hack probably when kind 0.5.0 is out. Why is this linking even needed? See also [0]! [0]: kubernetes-sigs/kind#662
The previous approach to link `/dev/kmsg` to `/dev/console` only works on images that we build ourselves. The new approach is to do the linking at runtime, parallel to kind brining up the cluster: We run a function parallel to kind, which tries to exec into the control plane node and do the linking. This should succeed as soon as the node container is up, in which case the function will terminate gracefully. As this is fixed in kind already [0], we can remove that hack probably when kind 0.5.0 is out. Why is this linking even needed? See also [0]! [0]: kubernetes-sigs/kind#662
Just in case someone comes looking, for my However poking around a little bit, I found and verified that this now works ... Bind host /dev/kmsg for OOM killer:
See this (and scroll down a bit). I hope this helps others. |
I missed your comment previously @nmvega, I think we should be doing something else in kind as well, I just stumbled across https://www.mail-archive.com/lxc-devel@lists.sourceforge.net/msg02241.html while rethinking this and came to post about the removal in LXC :-) I'm not sure kind should be responsible for ensuring |
What happened:
kind is not able to start the control plane (with the provided node images) when
/dev/kmsg
is not available in the node container.kind then fails with:
Checking on the node, I can see the following error:
For the node images I bake myself, I have the following dirty hack in place:
kind build node-image ...
ExecStartPre
for the kubelet which just does something like[ -e /dev/kmsg ] || ln -s /dev/console /dev/kmsg
After that
kind create cluster ...
successfully starts the control plane.What you expected to happen:
kind should be able to bring up the control plane, at least when
/dev/console
is available.How to reproduce it (as minimally and precisely as possible):
Run kind on an environment without
/dev/kmsg
, eg. concourse (via kind-on-c for example) and with the 1.15 node image provided by kind.Anything else we need to know?:
I currently (need to dig deeper) have no idea what the downsides are when linking
/dev/kmsg
to/dev/console
or what to do when/dev/console
is not available either (when would that be the case). My tests seem to suggest that the cluster works just fine when doing this linking. Would thekind
maintainers be open for a PR which sets such aExecStartPre
(or makes/dev/kmsg
available via some other means for that matter)?Environment:
kind version: (use
kind version
):Kubernetes version: (use
kubectl version
):v1.15.0
(the version that is baked intokindest/node:v1.15.0
)Docker version: (use
docker info
): ``OS (e.g. from
/etc/os-release
):The text was updated successfully, but these errors were encountered: