At Nirmata, we’re huge on Kubernetes and we’re big on how the rest of the DevOps and IT worlds cover and report and understand Kubernetes – the best solution for containerization as a service and container orchestration that we have found! We believe in Kubernetes as well as our policy engine natively designed for Kubernetes – Kyverno. And we love it when we find others who appreciate the possibilities with Kubernetes!
We came across this fairly in-depth, rigorous reporting from InfoWorld on Kubernetes for container orchestration. The author, Serdar Yegulalp, has some smart and insightful things to say and it’s always refreshing to hear how those who are not committed to our mission of global containerization via Kubernetes explain Kubernetes’ value for Development and Operations.
We found these portions to be accurate and well-written.
On container orchestration itself:
“Containers support VM-like separation of concerns but with far less overhead and far greater flexibility. As a result, containers have reshaped the way people think about developing, deploying, and maintaining software. In a containerized architecture, the different services that constitute an application are packaged into separate containers and deployed across a cluster of physical or virtual machines. But this gives rise to the need for container orchestration—a tool that automates the deployment, management, scaling, networking, and availability of container-based applications.”
On defining Kubernetes:
“Kubernetes is an open source project that has become one of the most popular container orchestration tools around; it allows you to deploy and manage multi-container applications at scale. While in practice Kubernetes is most often used with Docker, the most popular containerization platform, it can also work with any container system that conforms to the Open Container Initiative (OCI) standards for container image formats and runtimes. And because Kubernetes is open source, with relatively few restrictions on how it can be used, it can be used freely by anyone who wants to run containers, most anywhere they want to run them—on-premises, in the public cloud, or both.”
On Kubernetes architecture – how Kubernetes actually works:
“Kubernetes’s architecture makes use of various concepts and abstractions. Some of these are variations on existing, familiar notions, but others are specific to Kubernetes….
The highest-level Kubernetes abstraction, the cluster, refers to the group of machines running Kubernetes (itself a clustered application) and the containers managed by it. A Kubernetes cluster must have a master, the system that commands and controls all the other Kubernetes machines in the cluster. A highly available Kubernetes cluster replicates the master’s facilities across multiple machines. But only one master at a time runs the job scheduler and controller-manager….
Each cluster contains Kubernetes nodes. Nodes might be physical machines or VMs. Again, the idea is abstraction: Whatever the app is running on, Kubernetes handles deployment on that substrate. Kubernetes even makes it possible to ensure that certain containers run only on VMs or only on bare metal.
Nodes run pods, the most basic Kubernetes objects that can be created or managed. Each pod represents a single instance of an application or running process in Kubernetes, and consists of one or more containers. Kubernetes starts, stops, and replicates all containers in a pod as a group. Pods keep the user’s attention on the application, rather than on the containers themselves. Details about how Kubernetes needs to be configured, from the state of pods on up, is kept in Etcd, a distributed key-value store.”
On Kubernetes policies:
“Policies in Kubernetes ensure that pods adhere to certain standards of behavior. Policies prevent pods from using excessive CPU, memory, process IDs, or disk space, for example. Such “limit ranges” are expressed in relative terms for CPU (e.g., 50% of a hardware thread) and absolute terms for memory (e.g., 200MB). These limits can be combined with resource quotas to ensure that different teams of Kubernetes users (as opposed to applications generally) have equal access to resources.”
Lastly, on the advantages of Kubernetes:
“Kubernetes manages app health, replication, load balancing, and hardware resource allocation for you….
Kubernetes eases the deployment of preconfigured applications with Helm charts….
Kubernetes simplifies management of storage, secrets, and other application-related resources….
Kubernetes applications can run in hybrid cloud and multicloud environments…”
We couldn’t have said or written better ourselves. Good stuff from InfoWorld indeed!
Lastly, you can learn more about Nirmata on this page. Thanks for reading.