Kubernetes is an open-source, extensible, portable platform that automates software management, deployment, and scaling of containerized services and workloads.
Kubernetes facilitates declarative automation and configuration and has a fast-growing ecosystem. As a result, Kubernetes services, tools, and support are highly available.
Kubernetes: Then & Now
Kubernetes is from the Greek word pilot or helmsman, and its abbreviation is K8s. K8s stand for the eight letters counted between the “K” and the “s.” Google designed Kubernetes and open-sourced the project in 2014, but the Cloud Native Computing Foundation now maintains it.
Kubernetes works with Docker, Containerd, and CRI-O. Initially, it interfaced solely with the Docker runtime through a “dockershim;” however, from 2016 until April 2022, Kubernetes deprecated the shim over direct interfacing with the container through Containerd or substituting Docker with a runtime compliant with the Container Runtime Interface (CRI). Eventually, with the May 2022 release of v1.24, “Dockershim” was removed.
Companies currently offering Kubernetes-based Platforms or Infrastructures as a Service (PaaS or IaaS) that deploys Kubernetes are Google, Amazon, Microsoft, IBM, Oracle, VMware, Hat, Red Platform9, and SUSE.
Why You Should Use Kubernetes
Containers are a valuable way to bundle and run applications. For instance, in a production environment, one needs to manage the containers running the applications and avoid downtime. If a container goes down, another container must start.
A Kubernetes system handles this behavior by providing a framework for the resilient running of distributed systems. In addition, Kubernetes handles scaling and failover for applications, offers deployment patterns, and more.
Additional abilities with Kubernetes:
- Service load balancing and discovery: Kubernetes can expose a container using its IP address or DNS name. Kubernetes can load balance and distribute the network traffic to stabilize deployment during traffic peaks.
- Storage orchestration: Kubernetes enables automatically mounting your chosen storage system, such as public cloud providers or local storage.
- Automated rollouts and rollbacks: Users can describe the preferred state for their deployed containers, and Kubernetes can change containers to the state at a regulated rate. For instance, one can automate Kubernetes to create new containers for deployment, remove current containers and apply all their resources to the new container.
- Automatic bin packing: Provide Kubernetes with a nodes cluster to run containerized tasks. For instance, one can instruct Kubernetes on how much memory (RAM) and CPU each container requires. Kubernetes can fit containers onto your nodes to ensure maximum use of your resources.
- Self-healing: Kubernetes can restart failed containers, replace them, kills those that do not respond to a user-defined health test, and will not promote them to customers until they are ready to serve.
- Secret and configuration management: Kubernetes enables storing and managing sensitive data, such as SSH keys, OAuth tokens, and passwords. One can update and deploy secrets and application configurations without upgrading container images or exposing secrets in the stack configuration.
Kubernetes is not a conventional, comprehensive PaaS (Platform as a Service) system. Because Kubernetes functions at the container level, not the hardware level, it delivers general features of a PaaS offering, such as scaling, load balancing, and deployment.
It also allows users to integrate monitoring, alerting, and logging solutions. However, with Kubernetes, these default solutions are pluggable and optional. Kubernetes gives the building blocks for creating developer platforms; however, it maintains user flexibility and choice where it is essential.