Container orchestration is all about managing the life cycles of containers, especially in large, dynamic environments.
Container Orchestration can be used to perform a lot of tasks, some of them includes:
- Provisioning and deployment of containers
- Scaling up or removing containers to spread application load evenly
- Movement of containers from one host to another if there is a shortage of resources
- Load balancing of service discovery between containers
- Health monitoring of containers and hosts
There are many container orchestration solutions which are available, some of the popular ones include:
- Docker Swarm
- Apache Mesos
- Elastic Container Service (AWS ECS)
There are also various container orchestration platforms available like EKS.
Kubernetes (K8s) is and open-Source container Orchestration engine developed by Google.
It is originally designed by Google, and is now maintained by the Cloud Native Computing Foundation.
Things to configure while working with Kubernetes.
|Sr No||Things to Install||Description|
|1||kubectl||CLI for running user commands against cluster|
|2||Kubernetes Master||Kubernetes Cluster by itself|
|3||Worker Node Agents||Kubernetes Node Agent|
There are multiple ways to get started with fully functional k8s environment.
- Use the Managed K8s Service
- Use Minikube
- Install & Configure K8s Manually (Hard Way)
In this approach you have to install all the components ok K8s Individually
You have to just download kubectl and that's it. As rest all the things are taken care by Managed Service. Download CLI and just need to connect with K8s master.
Take care of K8s master also the worker node, then we need to configure the kubectl.
It has disadvantage that it provision single node cluster.
Depending on the Operations there are various APIs availble.
eg: /apis , /metrics ,
/api/v1/pods or /api/v1/nodes or /api/v1/services
to explore APIs, run below command and goto: localhost:8080
kubectl proxy --port 8080
A pod is a collection of containers and its storage inside a node of a Kubernetes cluster. It is possible to create a pod with multiple containers inside it. For example, keeping a database container and data container in the same pod.
There are two types of Pods −
- Single container pod
- Multi container pod
$ kubectl run <name of pod> --image=<name of the image from registry>
kubectl run tomcat --image = tomcat:8.0
Multi container pods are created using yaml mail with the definition of the containers.
apiVersion: v1 kind: Pod metadata: name: Tomcat spec: containers: - name: Tomcat image: tomcat: 8.0 ports: containerPort: 7500 imagePullPolicy: Always -name: Database Image: mongoDB Ports: containerPort: 7501 imagePullPolicy: Always
For more deep on Pods goto: Kubernetes Pods
Kubernetes Objects are basically a record of intent that you pass on to the Kubernetes Cluster.
Once you create the object, the kubernetes system will constantly work to ensure that object exists.
In Docker main difference between ENTRYPOINT and CMD is that Override the main command in Dockerfile with the command passing as arguments.
Whereas, in Kubernetes we can override both the ENTRYPOINT and CMD with command and arguments field.
|Docker Field Name||K8s field Name||Description|
|ENTRYPOINT||command||Command that will run by the container|
|CMD||args||Argument passed to the container|
Let me show you how command and args work on kubernetes.
Specific Kubernetes setups, coming soon!!!!!!!!!!!!!!!!