What Is Kubernetes? What Can Kubernetes Do? When Should You Use Kubernetes?

What is Kubernetes?

This term is no longer unfamiliar to experienced developers, but for newcomers, it can still be quite new. In this article, let’s explore what Kubernetes is, what Kubernetes can do, and when you should use Kubernetes.

1. What Is Kubernetes?

Kubernetes, abbreviated as K8s, is an open-source container orchestration system originally developed by Google. Kubernetes is a portable, extensible open-source platform designed to manage containerized applications and services, making it easier to configure and automate application deployment.

Kubernetes is a large and rapidly growing ecosystem with widespread services, support, and tools available. The name Kubernetes comes from Greek, meaning “helmsman” or “navigator.” Google open-sourced Kubernetes in 2014.

2. What Can Kubernetes Do?

Containers provide an excellent way to package and run applications. In a production environment, you need to manage running containers and ensure that there is no downtime.


Example: If one container stops running, another container needs to start automatically. This process becomes much easier when handled by a system.

This is where Kubernetes comes in. Kubernetes provides a powerful framework for running distributed systems resiliently. It handles scaling and failover for your applications, offers deployment patterns, and much more.


Example: Kubernetes can easily manage a canary deployment for your system.

So, what does Kubernetes provide?

2.1 Service Discovery and Load Balancing

Kubernetes can expose a container using DNS or its own IP address. If traffic to a container becomes high, Kubernetes can load balance and distribute network traffic to ensure stable deployments.

2.2 Storage Orchestration

Kubernetes allows you to automatically mount the storage system of your choice, such as local storage or public cloud providers.

2.3 Automated Rollouts and Rollbacks

You can describe the desired state for your deployed containers using Kubernetes, and it can change the actual state to match the desired state at a controlled rate. For example, Kubernetes can automate the creation of new containers, remove existing ones, and apply all their resources to the new containers.

2.4 Automatic Bin Packing

You provide Kubernetes with a cluster of nodes that it can use to run containerized tasks. You specify how much CPU and memory (RAM) each container requires, and Kubernetes schedules the containers onto nodes to make the best use of your available resources.

2.5 Self-Healing

Kubernetes restarts failed containers, replaces containers, removes containers that do not respond to user-defined health checks, and prevents traffic from being sent to containers until they are ready to serve requests.

2.6 Configuration and Secret Management

Kubernetes lets you store and manage sensitive information such as passwords, OAuth tokens, and SSH keys. You can deploy and update secrets and application configurations without rebuilding container images and without exposing secrets in your configuration stack.

3. When Should You Use Kubernetes?

Kubernetes is best used when you need to manage and deploy complex systems consisting of multiple containers or microservices. Kubernetes provides effective solutions for managing, deploying, and operating projects that require:

  • Scalability (Flexible scaling): Kubernetes allows developers to easily scale the number of containers or microservices up or down as needed.
  • Availability (High availability): Kubernetes offers features such as replication, self-healing, automatic rollbacks, and horizontal scaling to ensure systems remain robust and uninterrupted.
  • Continuous Deployment/Delivery: Kubernetes enables fast and seamless deployment and updates of source code.
  • Portability (Mobility): Kubernetes allows applications to be deployed and managed consistently across different environments, supporting easy migration between cloud providers or on-premise systems.

So, the answer to the question “When should you use Kubernetes?” is: if you are building a complex system with multiple containers or microservices, Kubernetes is the best solution to meet your management, operation, and scaling needs.

4. Limitations of Kubernetes

Although Kubernetes solves many challenges in system development and is a powerful tool for managing containers and deploying microservices, it also has certain limitations:

  • Complexity: Kubernetes offers many features and configuration options, but they can be complex to set up and operate, requiring a high level of expertise and resources.
  • Resource Requirements: Kubernetes requires significant server resources, especially when managing multiple nodes.
  • Networking Challenges: While Kubernetes provides advanced networking features, configuring and managing them can increase deployment complexity.
  • Cost: Kubernetes can increase infrastructure and networking costs, particularly when using multiple nodes or managed cloud services such as Amazon EKS, Google GKE, or Azure AKS.
  • Security: Kubernetes includes many security features, but configuring and managing them properly can be complex and error-prone.

Leave a Reply