-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
move off kindbase image #7788
Comments
It would be nice with some more details here... Like: why do we want to pin the package versions ? Why is the containerd version different (from kind) They do settle on a major version, currently 19.10 It would be very nice if we could share the ugly systemd hacks and such with KIND, if possible:
But otherwise I suppose we could fork the Dockerfile + files, and patch / merge them as necessary. |
It would be great if the scope of this one could be cut, to "only" do a OS version upgrade. Then we could include that in the 1.11 release, and then leave the rest of the stuff to 1.12 ? |
Added as #8250 |
Had some nice discussion with the Don't see any reason why we should not also try to cooperate on the Currently kind has a "base" image based on ubuntu, that is then inherited by a "node" image. The "node" image adds the kubernetes binaries, and preloads all the kubernetes images.
I guess this issue needs to be broken down further ? https://github.com/kubernetes-sigs/kind/blob/master/images/base/files/usr/local/bin/entrypoint |
Here are all the files needed for the kindbase: Enables you to rebuild it locally, as needed:
We can remove the containerd, crictl and CNI installations. Since they will be replaced by the kubic packages later anyway, that makes image smaller. We had forgotten to install cri-tools package though (for crictl), so I added that (after cri-o). |
The end result is a 17% smaller image, 807MB (vs 974 MB)
Also, the initial attempt failed because of the pinning... Before and after: -# Configure containerd and runc binaries from kind-ci/containerd-nightlies repository
-# The repository contains latest stable releases and nightlies built for multiple architectures
-ARG CONTAINERD_VERSION="v1.3.3-14-g449e9269"
-# Configure CNI binaries from upstream
-ARG CNI_VERSION="v0.8.5"
-# Configure crictl binary from upstream
-ARG CRICTL_VERSION="v1.17.0" Pretty much the same:
But installed from the kubic packages instead of upstream. https://build.opensuse.org/project/show/devel:kubic:libcontainers:stable |
Here is a summary of the added cost, of providing multiple container runtimes:
Note that docker requires containerd, and both cri-o and podman use conmon/cni. containerdThe following additional packages will be installed: dockerSuggested packages: cri-oThe following additional packages will be installed: podmanThe following additional packages will be installed: |
Here are the modified Dockerfiles: Still has the forked kind base, but now with containerd/crictl/cni-plugins replaced by debs (per above). Forking and maintaining the entrypoint doesn't seem to be worth it, though. And pinning doesn't work. |
Here are the files that got added, that we are replacing with kubic packages:
Total size: 151.5M The package binaries are mostly the same size, it's about the duplication.
We need to install the packages, since they are dependencies for others. |
current issues
the ubuntu version is not pinned down in kind base image, which causes re-building kic-base image impossible for example, the specific version of podman was not avialble anymore after re-building same kic base image.
kind image entry point casues slow down on execs.
kind image comes with a preinstalled containerd, which is different version than our VM containerd, causing troubleshooting between drivers be more mystrious
Implementation:
The text was updated successfully, but these errors were encountered: