4 ms·
Good news about zombies: Kubernetes will soon solve this by having the pause container (which is automatically included in every pod) automatically reap childre
by atombender 9y ago
Good news about zombies: Kubernetes will soon solve this by having the pause container (which is automatically included in every pod) automatically reap children. [1]
Note that this change depends on the shared PID namespace support, which a larger, still-ongoing endeavour [2].
[1] https://github.com/kubernetes/kubernetes/commit/81d27aa23969b77f5e7e565b0b69234537b0503e https://github.com/kubernetes/kubernetes/commit/81d27aa23969...
[2] https://github.com/kubernetes/kubernetes/issues/1615 https://github.com/kubernetes/kubernetes/issues/1615
- shykes 9y agoThe zombie reaping problem is fixed in Docker. You can simply use `docker run --init` with no argument, and it will spawn a tiny init that will reap children processes correctly. We don't enable the flag by default to respect backwards compatibility.
- dvdgsng 9y agoSidenote: this Docker native implementation uses Tini (https://github.com/krallin/tini#using-tini https://github.com/krallin/tini#using-tini)
- lobster_johnson 9y agoThis would require Kubernetes to do the same, which I don't think it does?
- shykes 9y agoIt's up to the Kubernetes developers to decide if they want to use that feature of Docker, yes.
- atmosx 9y agoCould you explain a bit further? What does backwards compatibility mean in this context. The API?
- shykes 9y agoIn this context it means preserving the default behavior of running the command specified in the image as PID 1, and not injecting any extra processes in the namespace. The difference in the runtime environment is subtle, but some applications rely on it. If we changed this default those applications would behave differently after upgrading to Docker 1.13 or later.
- lemoncucumber 9y agoI believe shared pid namespaces are landing in kubernetes 1.7.0 and therefore should be available relatively soon, no?
- lobster_johnson 9y agoNot sure. The changelog doesn't include PID namespaces yet, not sure if it will be merged: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md https://github.com/kubernetes/kubernetes/blob/master/CHANGEL...
- lemoncucumber 9y agoIt's in there, under "Changelog since v1.7.0-alpha.3"
- lobster_johnson 9y agoOops, I was on mobile and didn't see that the list wasn't linear with respect to version numbers. That's awesome. I hope GKE is planning to migrate to a newer Docker version soon (they've been on 1.11.2 for a long time) so we can benefit from this.
- CurtMonash 9y agoThe zombie problem is solved by reaping children? I guess Craster was right after all. :)