Introduction to Kubernetes (k8) – a quick lookback
Kubernetes has grown significantly since 2018, increasing to 109,000 stars and 3,674 contributors by 2024. It offers features like scaling, automated rollouts, and self-healing, encouraging hands-on learning for newcomers.
Read original articleKubernetes, an open-source system for automating the deployment, scaling, and management of containerized applications, has seen significant growth since its introduction six years ago. In 2018, it had 37,578 stars and 1,693 contributors on GitHub, while by 2024, these numbers increased to 109,000 stars and 3,674 contributors, highlighting its rising popularity and status as one of the most successful open-source projects. The author reflects on their initial learning experience with Kubernetes, which was perceived as complex but ultimately beneficial for managing applications.
Key features of Kubernetes include horizontal scaling, automated rollouts and rollbacks, self-healing, service discovery, load balancing, and improved server utilization. Its architecture consists of a master node with components like the API server, scheduler, and controller manager, along with worker nodes that run pods, which are groups of containers. Kubernetes addresses critical issues such as application configuration, service discovery, updates, monitoring, and deployment.
For those new to Kubernetes, the author recommends practical learning through resources like Minikube, the book "Up and Running with Kubernetes," online courses, and official documentation. The conclusion emphasizes that Kubernetes is a lasting technology, encouraging newcomers to engage with it hands-on to enhance their understanding and skills.
Related
A skeptic's first contact with Kubernetes
The author discusses their skepticism about Kubernetes, highlighting its complexity and workload management features. They acknowledge its strengths but express concerns about operational stability and configuration challenges.
A skeptic's first contact with Kubernetes
The author shares their journey from skepticism to understanding Kubernetes, highlighting its workload management, key components, and challenges like complexity, scaling, and configuration, while recognizing its architectural value.
k8s has a meaning: in k-ubernete-s there are 8 letters between the k and the s.
At the same time its popularity makes it obvious that competition basically will not exist in the foreseeable future.
I'm not sure that I qualified to judge it, but I feel that Kubernetes has great architecture.
I was astounded when I realized that Kubernetes is super flexible when it comes to its underlying data model and API. At some time I wanted to reimplement it as a data store and I still think that it might make sense. Think about PostgREST but much more mature and flexible. Like you submit CRD which is JSON schema and then you can insert your entities, query them, listen for changes and so on. And organize your application as a set of "controllers" reconciling those entities into some final form. I just didn't see that kind of universal and flexible and successful architectures before. I assume that it exists in some internal projects.
Kubernetes has strictly defined scope and even reduces that over time. It does not do anything with containers or images, it delegates it to CRI plugin with several popular implementations (containerd and crio). It does not do anything with networking, it delegates it to CNI plugin with multiple popular implementations (flannel, calico, cilium just to name a few). It does not do anything to interact with cloud platforms like AWS, etc. It has some conventions about cloud controllers and cloud vendors implement those controllers, providing integration, scaling and other cloud-specific features.
At the same time I'm using Kubernetes "directly". I don't write stuff which generates yamls. I write yamls directly. Sometimes I use templating engines, mostly kustomize, but those do not reduce much work. And deploying simple application requires quite a lot of YAML lines, most of those being boilerplate. For example docker-compose provides super-concise language. I don't need to write any boilerplate, I just write stuff that makes sense. With Kubernetes, I sometimes have a feeling like I'm writing an assembly code instead of compact high-level code.
I feel like Kubernetes was supposed to be used with some great templating, but all we got was helm and kustomize...
It's not a huge issue, but that's probably a main issue for me.
Other than that, I pretty much like Kubernetes and would use it everywhere for production. Even for single server. It has some learning curve, but once I learned it, I like it and wouldn't use, say, docker instead. And I used a lot of docker.
Related
A skeptic's first contact with Kubernetes
The author discusses their skepticism about Kubernetes, highlighting its complexity and workload management features. They acknowledge its strengths but express concerns about operational stability and configuration challenges.
A skeptic's first contact with Kubernetes
The author shares their journey from skepticism to understanding Kubernetes, highlighting its workload management, key components, and challenges like complexity, scaling, and configuration, while recognizing its architectural value.