In this hands-on lab, you will be presented with a 3-node cluster. You will need to deploy your application, so you can begin serving your end users. You will deploy the image from `linuxacademycontent/kubeserve:v1` and then verify the deployment was successful. Once your application is running and serving clients, you will perform a rolling update, making sure the rollout is successful and there is no downtime for your end users. You will make use of the `kubectl` command-line tool to perform all operations, in combination with the `set image` command to perform the rolling update to the new version. When you have verified the end users are now using version 2 of the app versus version 1, you may consider this hands-on lab complete.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create and Roll Out Version 1 of the Application, and Verify a Successful Deployment
Create the
kubeserve-deployment.yaml
file, and add the following YAML to create your deployment:apiVersion: apps/v1 kind: Deployment metadata: name: kubeserve spec: replicas: 3 selector: matchLabels: app: kubeserve template: metadata: name: kubeserve labels: app: kubeserve spec: containers: - image: linuxacademycontent/kubeserve:v1 name: app
Use the following command to create the deployment:
kubectl apply -f kubeserve-deployment.yaml --record
Use the following command to verify the deployment was successful:
kubectl rollout status deployments kubeserve
Use the following command to verify the app is at the correct version:
kubectl describe deployment kubeserve
- Scale Up the Application to Create High Availability
Use the following command to scale up your application to 5 replicas:
kubectl scale deployment kubeserve --replicas=5
Use the following command to verify the additional replicas have been created:
kubectl get pods
- Create a Service So Users Can Access the Application
Use the following command to create a service for your deployment:
kubectl expose deployment kubeserve --port 80 --target-port 80 --type NodePort
Use the following command to verify the service is present and collect the cluster IP:
kubectl get services
- Perform a Rolling Update to Version 2 of the Application, and Verify Its Success
Use this
curl
loop command to see the version change as you perform the rolling update:while true; do curl http://<ip-address-of-the-service>; done
Use this command to perform the update (while the curl
loop
is running):kubectl set image deployments/kubeserve app=linuxacademycontent/kubeserve:v2 --v 6
Use this command to view the additional
ReplicaSet
created during the update:kubectl get replicasets
Use this command to verify all pods are up and running:
kubectl get pods
Use this command to view the rollout history:
kubectl rollout history deployment kubeserve