What is Kubernetes?

Kubernetes Essentials:

Kubernetes is a powerful tool. It can help you manage complex applications and provides you with the ability to easily automate tasks involved in managing them.

Kubernetes — also known as “k8s” or “kube” — is an open source project designed to manage a Linux container cluster as a single system. Kubernetes manages and runs Docker containers on a large number of hosts, and also provides co-location and replication of a large number of containers. The project was started by Google and is now supported by many companies, including Microsoft, RedHat, IBM and Docker.

Kubernetes is Greek for helmsman or pilot, hence the helm in the Kubernetes logo. K8s as an abbreviation results from counting the eight letters between the “K” and the “s”.

Kubernetes builds upon 15 years of experience of running production workloads at Google, combined with best-of-breed ideas and practices from the community.

The project has two goals. If you are using Docker containers, the next question is how to scale and run containers on a large number of Docker hosts at once, and how to balance them. The project offers a high-level API that defines logical grouping of containers, allowing you to define pools of containers, balance the load, and specify their placement.

Basic Kubernetes Tasks:

  • Deployment of containers and all operations to run the required configuration. These include restarting stopped containers, moving them to allocate resources for new containers, and other operations.
  • Scaling and running multiple containers simultaneously on a large number of hosts.
  • Balancing multiple containers during startup. To do this, Kubernetes uses an API whose task is to logically group containers. This makes it possible to define their pools, set their placement, and evenly distribute the load.

Advantages:

  • Planet Scale – Designed on the same principles that allows Google to run billions of containers a week, Kubernetes can scale without increasing your ops team.
  • Never Outgrow – Whether testing locally or running a global enterprise, Kubernetes flexibility grows with you to deliver your applications consistently and easily no matter how complex your need is.
  • Run K8s Anywhere – Kubernetes is open source giving you the freedom to take advantage of on-premises, hybrid, or public cloud infrastructure, letting you effortlessly move workloads to where it matters to you.
  • Service discovery and load balancing – Containers can run through their own IP addresses or use a common DNS name for an entire group. K8s can load balance and distribute network traffic to maintain a stable deployment.
  • Automatic storage management – The user can set which storage to use for deployment by default – internal, external cloud provider (GKE, Amazon EKS, AKS), other options.
  • Automatic implementation and rollback of changes – The user can make any additions to the current container configuration in the process of work. If this breaks the stability of the deployment, K8s will roll back the changes to a stable version on its own.
  • Automatic resource allocation – Kubernetes itself allocates space and RAM from a dedicated cluster of nodes to provide each container with everything it needs to work.
  • Manage passwords and settings – K8s can serve as an application for secure processing of confidential information related to the operation of applications – passwords, OAuth tokens, SSH keys. Depending on the application, the data and settings can be updated without re-creating the container.
  • Self-healing when a failure occurs – Using special metrics and tests, the system can quickly identify damaged or unresponsive containers. Failed containers are recreated and restarted on the same pod.

Conclusion:

Today, Kubernetes and the broader container ecosystem are maturing into a general-purpose computing platform and ecosystem that rivals — if not surpasses — virtual machines (VMs) as the basic building blocks of modern cloud infrastructure and applications. This ecosystem enables organizations to deliver a high-productivity Platform-as-a-Service (PaaS) that addresses multiple infrastructure-related and operations-related tasks and issues surrounding cloud-native development so that development teams can focus solely on coding and innovation.