enhancements
cri-dockerd
Our great sponsors
enhancements | cri-dockerd | |
---|---|---|
57 | 11 | |
3,222 | 932 | |
1.4% | 4.9% | |
9.8 | 8.4 | |
7 days ago | 2 days ago | |
Go | Go | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
enhancements
-
Exploring cgroups v2 and MemoryQoS With EKS and Bottlerocket
0 is not the request we've defined. And that makes sense. Memory QoS has been in alpha since Kubernetes 1.22 (August 2021) and according to the KEP data was still in alpha as of 1.27.
-
Jenkins Agents On Kubernetes
Note: There's actually a Structured Authentication Config established via KEP-3331. It's in v1.28 as a feature flag gated option and removes the limitation of only having one OIDC provider. I may look into doing an article on it, but for now I'll deal with the issue in a manner that should work even with a bit older versions versions of Kubernetes.
-
Isint release cycle becoming a bit crazy with monthly releases and deprecations ?
Kubernetes supports a skew policy of n+2 between API server and kubelet. This means if your CP and DP are both on 1.20, you could upgrade your control plane twice (1.20 -> 1.21 -> 1.22) before you need to upgrade your data plane. And when it comes time to upgrade your data plane you can jump from 1.20 to 1.22 to minimize update churn. In the future, this skew will be opened to n+3 https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/3935-oldest-node-newest-control-plane
-
Kubernetes SidecarContainers feature is merged
KEP: https://github.com/kubernetes/enhancements/tree/master/keps/...
TLDR: Introduce a restartPolicy field to init containers and use it to indicate that an init container is a sidecar container. Kubelet will start init containers with restartPolicy=Always in the order with other init containers, but instead of waiting for its completion, it will wait for the container startup completion.
So, until now, a sidecar container was just the idea of running helper containers in you Kubernetes pod that were 'helpers' for something: connection to databases or vpns, mesh networking, pulling secrets or config, debugging... But they didn't have special status, they were just regular containers in your pod.
This sometimes posed some problems because they weren't available for the full life cycle of the pod, notably on the init process. So if your init containers needed secrets, connections, networking... that was being provided via a sidecar container, you were going to have a hard time.
With this change, among other things, sidecars containers are going to be available for the whole life cycle of the pod.
There are other implications, probably, but I still haven't finished reading the KEP [0]. Check it out, and there you'll find its motivation and several interesting examples.
0: https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/753-sidecar-containers
The KEP (Kubernetes Enhancement Proposal) is linked to in the PR [1]. From the summary:
> Sidecar containers are a new type of containers that start among the Init containers, run through the lifecycle of the Pod and don’t block pod termination. Kubelet makes a best effort to keep them alive and running while other containers are running.
[1] https://github.com/kubernetes/enhancements/tree/master/keps/...
-
When you learn the Sidecar Container KEP got dropped from the Kubernets release. Again.
full Kubernetes Enhancement Proposal: https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md
-
Kubernetes 1.27 will be out next week! - Learn what's new and what's deprecated - Group volume snapshots - Pod resource updates - kubectl subcommands … And more!
If further interested, I may recommend checking out the KEP. I love how they document the decision making, and all these edge cases :).
- Twitter to un-verify people who don’t pay $8/month starting on April Fools’ Day
cri-dockerd
-
How to create a 3-node kubernetes cluster and deploy an application on my ubuntu 22.04 minibox
$ wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.9/cri-dockerd-0.3.9.amd64.tgz $ tar zxvf cri-dockerd-0.3.9.amd64.tgz $ cd cri-dockerd $ sudo mkdir -p /usr/local/bin $ sudo install -o root -g root -m 0755 cri-dockerd/usr/local/bin/cri-dockerd $ mkdir foo; cd foo $ git clone [email protected]:Mirantis/cri-dockerd.git $ cd cri-dockerd $ sudo install packaging/systemd/* /etc/systemd/system $ sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service $ sudo systemctl daemon-reload $ sudo systemctl enable --now cri-docker.socket
-
Kubernetes Architecture Explained: Worker Nodes in a Cluster
But not to worry, you can still use Docker as a container runtime in Kubernetes using the cri-dockerd adapter. cri-dockerd provides a shim for Docker Engine that lets you control Docker via the Kubernetes CRI. ****
- CRI-dockerd is an adapter that provides a shim for Docker Engine that lets you control Docker via the Kubernetes Container Runtime Interface
-
Kubernetes 1.24 Released: What’s New?
As of version 1.24, either one of the other supported runtimes (e.g. containerd or CRI-O) or, in case you still want to rely on Docker Engine, cri-dockerd must be used. Further information on precautions that may be necessary due to the removal of Dockershim is provided by Kubernetes in a guide.
-
Podman 4.0.0
Kubernetes requires a tool which implements the Container Runtime Interface, a standardized API for starting & managing containers. This is from 2015-2016[1].
For a while Kubernetes has included something called the "dockershim", it's own implementation of a CRI interface that, under the hood, calls Docker or Podman. There's also tools like kind[2] ("kubernetes in docker") that go further- not just hosting Kubernetes worker containers in Docker, but hosting the main kubernetes daemons also in Docker.
Kubernetes deprecated Dockershim, formally in December 2020, but is just throwing the switch now in the upcoming 1.24, expected mid-April[3]. A company Mirantis has pledged to take over support of Dockershim[4], and is calling the new effort "cri-dockerd"[5]. This should allow Kubernetes workers to continue to run via Docker or Podman.
Kind is unaffected, since it runs the main Kubernetes controllers in Docker, which then launch their own opencontainerd (one off the main CRI implementations) inside that Docker container, nested like, so no dockership/cri-dockerd is needed).
[1] https://kubernetes.io/blog/2016/12/container-runtime-interfa...
[3] https://kubernetes.io/blog/2022/01/07/kubernetes-is-moving-o...
[4] https://www.mirantis.com/blog/mirantis-to-take-over-support-...
-
Kubernetes vs Docker: Understanding Containers in 2021
Alternatively, if you want to keep on using Docker past version 1.23, follow the cri-dockerd project, which plans to keep Docker as a viable runtime alternative.
What are some alternatives?
containerd - An open and reliable container runtime
cri-o - Open Container Initiative-based implementation of Kubernetes Container Runtime Interface
kubeconform - A FAST Kubernetes manifests validator, with support for Custom Resources!
spark-operator - Kubernetes operator for managing the lifecycle of Apache Spark applications on Kubernetes.
kubernetes-json-schema - Schemas for every version of every object in every version of Kubernetes
klipper-lb - Embedded service load balancer in Klipper
Hey - HTTP load generator, ApacheBench (ab) replacement
kubeval - Validate your Kubernetes configuration files, supports multiple Kubernetes versions
connaisseur - An admission controller that integrates Container Image Signature Verification into a Kubernetes cluster
pixie - Instant Kubernetes-Native Application Observability
conftest - Write tests against structured configuration data using the Open Policy Agent Rego query language
kubernetes - Production-Grade Container Scheduling and Management