Kubernetes is a container orchestration tool that helps with the deployment and management of containers. Kubernetes Deployments provide declarative updates to Pods and ReplicaSets, allowing users to declare the desired state in a manifest (YAML) file and the controller will change the current state to the declared state. In this blog, we will explore Kubernetes Deployments in detail, including how to create and use them, their benefits, and how to monitor their progress.
Creating and Using Kubernetes Deployments
To create and use a Kubernetes Deployment, you need a Kubernetes cluster. Once you have a cluster, you can run the following commands in different terminals to watch what is going to happen:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
kubectl get pods
kubectl get replicasets
kubectl get deployments
kubectl get events
Then, create, scale, and update a deployment with the following commands:
kubectl create deployment nginx-deployment --image=nginx:1.14.2
kubectl scale deployment nginx-deployment --replicas=3
These commands will create a deployment with three replicas and update the image used by the deployment.
Benefits of Kubernetes Deployments
Kubernetes Deployments offer several benefits, including:
Declarative Updates: Kubernetes Deployments provide declarative updates to Pods and ReplicaSets, allowing users to declare the desired state in a manifest (YAML) file and the controller will change the current state to the declared state.
Simplified Deployment Process: Kubernetes Deployments simplify the deployment process by managing, scaling, and rolling back deployments2.
Robust Containerized Applications: Users can create more robust containerized applications by combining deployments with all the other Kubernetes resources.
Higher Development Velocity: Kubernetes Deployments lead to safer deployments, which means that developers can deploy more often, incrementally, and see more easily the results of their changes as they implement them.
Monitoring Kubernetes Deployments
To monitor the progress of a Kubernetes Deployment, you can use the kubectl rollout status
command. This command informs the user if the deployment was successful and provides details on the deployment status.
kubectl rollout status deployment/nginx-deployment
You can also check the deployment details using the kubectl rollout status
and kubectl get deployment
commands.
kubectl rollout status deployment/nginx-deployment
kubectl get deployment nginx-deployment -o yaml
Conclusion
Kubernetes Deployments provide declarative updates to Pods and ReplicaSets, allowing users to declare the desired state in a manifest (YAML) file and the controller will change the current state to the declared state. Kubernetes Deployments simplify the deployment process, manage, scale, and roll back deployments, and lead to safer deployments, which means that developers can deploy more often, incrementally, and see more easily the results of their changes as they implement them. Monitoring the progress of a Kubernetes Deployment is easy with the kubectl rollout status
and kubectl get deployment
commands.