- Lab
- A Cloud Guru
Scheduling Pods with Taints and Tolerations in Kubernetes
In this hands-on lab, you will be presented with a three-node cluster. One node is the master, and the other two are worker nodes. You will be responsible for splitting up the two worker nodes and making one of the worker nodes a production (prod) environment node and the other a development (dev) environment node. The purpose of identifying these two types (prod and dev) is to not accidentally deploy pods into the production environment. You will use taints and tolerations to achieve this, and then you will deploy two pods: One pod will be scheduled to the dev environment, and one pod will be scheduled to the prod environment. When you have verified the two pods are up and running and they are located within the correct environments, you may consider this hands-on lab complete.
Path Info
Table of Contents
-
Challenge
Taint one of the worker nodes to repel work.
- Use the following command to taint the node:
kubectl taint node <node_name> node-type=prod:NoSchedule
-
Challenge
Schedule a pod to the dev environment.
-
Use the following YAML to specify a pod that will be scheduled to the dev environment:
apiVersion: v1 kind: Pod metadata: name: dev-pod labels: app: busybox spec: containers: - name: dev image: busybox command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
1. Use the following command to create the pod: ``` kubectl create -f dev-pod.yaml ```
-
-
Challenge
Allow a pod to be scheduled to the prod environment.
-
Use the following YAML to create a deployment and a pod that will tolerate the prod environment:
apiVersion: apps/v1 kind: Deployment metadata: name: prod spec: replicas: 1 selector: matchLabels: app: prod template: metadata: labels: app: prod spec: containers: - args: - sleep - "3600" image: busybox name: main tolerations: - key: node-type operator: Equal value: prod effect: NoSchedule
-
Use the following command to create the pod:
kubectl create -f prod-deployment.yaml
-
-
Challenge
Verify each pod has been scheduled and verify the toleration.
-
Use the following command to verify the pods have been scheduled:
kubectl get pods -o wide
2.Scale up the deployment:
kubectl scale deployment/prod --replicas=3
-
Verify the toleration of the production pod:
kubectl get pods <pod_name> -o yaml
-
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.