What is container orchestration?
Before we dive into Kubernetes, first of all, you need to know what container orchestration is. Container technologies have radically changed the landscape of systems and the way software is packaged and deployed. Some of the benefits that containers bring are portability, agility, speed, immutability, and fault isolation.
A container orchestrator is a software that manages and coordinates containers in an automated way. There are several container orchestration tools such as Docker Swarm, Google Container Engine, Amazon ECS, and others. However, in this post, we will focus on Kubernetes, where we will explain the concept, most notable components of the tool and discuss the benefits that Kubernetes can offer, among other points.
Definition – What is Kubernetes?
Originally developed by Google, Kubernetes, or k8s for short, is a container orchestration tool. Kubernetes facilitates the deployment and operation of applications in a microservices architecture. It does this by creating an abstraction layer on top of a cluster of hosts, so development teams can deploy their applications and let Kubernetes manage the deployment of containers.
Platforms that offer Kubernetes
There are several cloud platforms that offer Kubernetes as a service. These platforms make the job easier by providing an interface that makes it easy to deploy applications on Kubernetes without having to worry about configuring and managing the various components of the cluster. Some of them are Amazon EKS, Digitalocean, OpenShift, or Rancher, among others.
Some Kubernetes cluster elements
Kubernetes has a number of features that allow you to provision and deploy your own containerized software. If you’re new to Kubernetes, the terminology can be new, and require some extra learning. Here are some of the basics:
- Pods: The minimum unit that can be deployed with Kubernetes. Each pod can contain one to several containers running on the same shared storage/network resources as the pod.
- Nodes: A physical or virtual machine that hosts the pods that perform the workload of an application.
- Control plane: The control plane runs the Kubernetes components that provide the core functionalities: exposing the Kubernetes API, scheduling workload deployments, managing the cluster, and direct communications throughout the system.
- Cluster: A group of nodes working together, which run containerized applications. Clusters consist of master and worker nodes. There can be one or more master nodes and zero or more worker nodes. For example, you can have several nodes in the same cluster running the same containers.
- Deployment: Kubernetes deployments define the scale at which you want to run your application by allowing you to set the details of how you want pods to be replicated across Kubernetes nodes. Deployments describe the number of identical pod replicas you want to run and the preferred update strategy for updating the deployment, among other things. Kubernetes will track the health of the pods, and remove or add pods as needed to bring the application deployment to the desired state. The deployment provides an abstraction layer that allows pods to be replaced easily and transparently. Pods in a deployment can be located on different nodes.
- Service: A set of pods running the same application or microservice can be grouped together to form a deployment, as we have already seen. Since these pods can be replaced and, due to the dynamic nature of Kubernetes, the different IP addresses of the pods will change, there is a need for a network resource to establish an entry point to these pods. A service abstracts away the underlying network complexity, making it possible to provide a single, unchanging entry point while making the layout of the pods that make up the deployment transparent.
- Ingress controller: It is software that provides reverse proxy functionality, configurable traffic routing, and TLS termination for Kubernetes services. A gateway driver is installed on the cluster, and then gateway rules are configured for a specific service or services.
- Kubectl: a command-line interface that sends a request to the Kubernetes API, either with specific commands, with the contents of a YAML manifest, or with data fetch requests.
- Kubelet: is a service running inside each node, which communicates with the control plane.
There are other Kubernetes components such as daemonsets, namespaces, replicaSets, secrets, and even custom resources. The ones mentioned here are the ones you are most likely to interact with when deploying applications on Kubernetes.
Learn more about when and how to use Kubernetes
Do you want to know more about k8s? In our Youtube channel, we explain you from a business perspective, what needs it covers, its advantages, and when to use it. 👇
Geko and Kubernetes – Why choose Geko Cloud?
If you are using or considering using containers to streamline building, scaling, and deploying your microservices-based application, Kubernetes gives you the ability to manage the infrastructure using declarative YAML files.
Container lifecycle management with Kubernetes using your deployments and operators along with a DevOps approach allows software development and IT operations to adapt to support the CI/CD channel. At Geko Cloud we are at your disposal if you are looking for a partner to implement Kubernetes, migrate to the cloud, move to a microservices model or manage your platform in the cloud. Contact us to find out more about our services.