What is Kubernetes
Kubernetes is an open source container orchestration platform. It is a portable, extensible and lightweight system for automating deployment, scaling, and management of containerized applications.
Why you need Kubernetes
Containers are a good way to bundle and run your applications. In a production environment, you need to manage the containers that run the applications and ensure that there is no downtime. For example, if a container goes down, another container needs to start. Wouldn't it be easier if this behavior was handled by a system? That's how Kubernetes comes to the rescue! Kubernetes provides you with a framework to run distributed systems resiliently.
Better management through modularity
Containers are a new way to distribute applications. They allow you to break up your application into smaller parts that focus only on the services they need and can be independently updated. Applications using containers can keep their code base independent from other applications, so you can easily move them between environments without losing functionality or data.
Deploying and updating software at scale
Devops is a method of building, testing, and releasing software. Its corollary has been a shift in emphasis from managing infrastructure to managing how software is deployed and updated at scale. Thanks to controllers, Kubernetes makes it easy to use infrastructure as part of this model.
The Deployment Controller simplifies a number of complex management tasks. For example:
- Scalability
- Visibility
- Time savings
- Version control
Laying the foundation for cloud-native apps
Kubernetes is the most popular container management and orchestration solution. It is available for various cloud providers, and can run on EC2 or rented hardware. Kubernetes allows you to scale horizontally, which means that you can add more nodes to your cluster at any given time. This gives you greater flexibility in terms of how many instances you will have to release, and provides better reliability as well. Your Kubernetes clusters can become large and complex, but they’re easy to manage using a command line interface so that ordinary users can easily perform routine maintenance tasks on them.
How Kubernetes Work
Kubernetes is a general tool designed to work for a wide range of scenarios, but is versatile enough to be used in a wider range of situations. It provides the tools and commands necessary for orchestrating the interaction and scaling of containers (most commonly Docker containers) and the infrastructure containers run on.
Kubernetes terminology and architecture
Pods
Kubernetes is a powerful orchestrator that simplifies the management of container-based applications. Kubernetes simplifies the deployment and maintenance of your application containers, in ways traditional virtual machines, containers and clouds can’t. That means less work for you – so you have more time to focus on the real work of building great software. And, it allows greater scale & agility with more efficient utilization of infrastructure resources, great performance & reduced operational overhead.
Deployments
Kubernetes provides a highly scalable and highly available container orchestration system. Containerized applications are run in Kubernetes pod clusters, each member of which is backed by one or more replicas (replicas are required so that no single point of failure can bring your application down). Deployments define the scale at which you want to run your application by letting you set the details of how you would like pods replicated on your Kubernetes nodes. Deployments describe the number of desired identical pod replicas to run and the preferred update strategy used when updating them
Services
Kubernetes is an open-source system for automating deployment, scaling and management of containerized applications. It was originally designed to address many challenges around cluster management of long-running application deployments. Kubernetes abstracts away some higher level concerns such as the naming and placement of applications, the selection and allocation of resources such as CPU, memory, storage, load balancers etc., application deployment pipelines and resource interdependencies. It also handles dynamic updates in a very robust manner – by creating new services from existing ones and destroying them when no longer needed – thus allowing for rapid evolution of applications even during rapid deployments that might require downtime as a side effect.
Nodes
A Kubernetes node manages, runs, and scales all the Pods from the Kubernetes cluster. The Nodes are the machine that performs the given work. Just as pods collect individual containers that operate together, a node collects entire pods that function together. When you’re operating at scale, you want to be able to hand work over to a node whose pods are free to take it.
Kubernetes Control Plane
The Kubernetes control plane is the nerve center that houses Kubernetes cluster components that manage and control the cluster. Compute resources, such as container engines and storage volumes, are managed by the control plane components. To ensure containerized workloads are running with the necessary resources in sufficient numbers, these core Kubernetes components can all run on one primary node but many enterprises concerned about fault tolerance replicate them across multiple nodes to achieve high availability.
Cluster
The Kubernetes cluster is composed of all of the above components put together as a single unit. It allows you to deploy software, scale easily and dynamically through auto-scaling, perform centralized infrastructure management and enables high reliability by eliminating user mistakes and local failures.