The Base Image
NOTE: This may not completely cover the current implementation.
The “base” image is a small-ish Docker image for runningnested containers, systemd, and kubernetes components.
To do this we need to set up an environment that will meet the CRI(currently just docker) and systemd's particular needs. Documentation for eachstep we take is inline to the image's Dockerfile),but essentially:
we preinstall tools / packages expected by systemd / Docker / Kubernetes otherthan Kubernetes itself
we install a custom entrypoint that allows us to perform some actions beforethe container truly boots
we set up a systemd service to forward journal logs to the container tty
we do a few tricks to minimize unnecessary services and inform systemd that itis in docker (see the Dockerfile)
This image is based on the ubuntu
image which starts relatively small fora Kubernetes node image, has near exclusively packages we need, and hasrelatively up to date packages.We strive to minimize the image size where possible.