Deployment
- When a deployment is created, it triggers a rollout
- Rollout creates a new revision (version)
- In the future when new deployment is created, a new rollout is created
- The new rollout creates one more "new" version
- These versions help to keep track of the changes and rollback if necessary
Deployment Strategy
- First strategy is delete and recreate strategy.
- Delete all the existing pods and deploy the new updated pods
- But this comes with application downtime
- Second strategy and default strategy is Rolling update strategy
- Kubernetes deletes one pod at a time in the older version and in its place creates a one pod at a time in the newer version
Update Strategy
- Updates can be many things like updating the labels, docker image, replicas etc
- These are directly updated into the deployment file and the changes are applied
- When the changes are applied using kubectl apply command, a new rollout and a new revision is created
- Another way to update the image name is to use the kubectl set image command. This will update the image name in the deployment. [CHECK THIS]
- Using kubectl describe deployment on the recreate and rollout upgrade strategy gives insight about the deployment strategy
- For recreate we can see that kubernetes creates the new replicaset, sets the old replicaset to zero
- For rollout upgrade we can see that kubernetes decrements one replica at a time in old replicaset and increments one replica at a time in the new replicaset
- At the end of the rollout the first replicaset will have 0 pods and the new replicaset have the desired pods
- Now when we undo a rollback of deployment kubernetes sets replicas to 0 in the new replicaset and the desired number in the older replica set
- At the end of the undo rollout the first replicaset will have desired pods and the new replicaset have the 0 pods
kubectl create -f <deployment-file>.yaml
-> Create a new deployment
kubectl get -f <deployment-file>.yaml
-> Get the status of the deployment
kubectl apply -f <deployment-definition>.yaml
-> Apply the new changes in the deployment file
kubectl rollout status deployment/<deployment-name> -n <namespace>
-> Get the rollout status of the deployment
kubectl rollout history deployment/<deployment-name> -n <namespace>
-> Get the rollout history of the deployment
kubectl set image deployment/<deployment-name> <container-name>=<new-image> -n <namespace>
-> Update the image name in the deployment file
kubectl get replicaset -n <namespace>
-> Gets the replicaset for the old and new deployments
kubectl rollout undo deployment/<deployment-name> -n <namespace>
-> Rollback the latest deployment
Comments
Post a Comment