Introduction

intro

this is part 51 from the journey it's a long journey(360 day) so go please check previous parts , and if you need to walk in the journey with me please make sure to follow because I may post more than once in 1 Day but surely I will post daily at least one 😍.

And I will cover lot of tools as we move on.


Files for this lab

all the files can be found on the repository of this journey , if you already have it just pull if not clone it. Files can be found here


Lab

app39

if we have an pod already running it will not be affected by taint because it's running before the taint. But every new pod will be affected. to make our POD tainted we run tol

kubectl taint nodes minikube app=myapp:NoSchedule

this will taint our Node it had a key to determine it. the key here is 'app' the operator is '=' and the taint effect is NoSchedule. Now let's take a look for the file I prepare for this lab Alt Text it's called app_051.yml getPo

kubectl create -f app_051.yml
kubectl get pods

We can see that the pod is holding on Pending because our node is tainted. let's do toleration on this pod , I will do it in app051v2.yml

v2 this is a look at the v2 , We specify inside spec the toleration of the pod we put same as our taint rules. now let's delete our old pod del

kubectl delete pods test-taint

now let's create new one using v2 Alt Text

kubectl create -f app_051_v2.yml
kubectl get pods

our pod start to create the container if you have a better pc and connection than me it will be running :p

Now let's untaint our Node untaint

kubectl taint nodes minikube app-

app is the key and - mean delete it it's now untainted. image8

kubectl taint nodes minikube app=myapp:PreferNoSchedule

PreferNoSchedule mean "Hello master if you don't have an available pod came and put it inside of me" in another words I am your last choice. let's delete our pod now again Alt Text

kubectl delete pods test-taint
kubectl create -f app_051.yml
kubectl get pods

notice it's app v1 which doesn't have toleration inside of it. It run immediately because we have no other Nodes (only 1 minikube) . untaint

kubectl taint nodes minikube app-

let's remove taint again. delete pod also again del

kubectl delete pods test-taint

Break

gifStretch


End Break

let's go back to our Lab again. Our last effect that we will talk about is NoExcute which means if you already have pods already running and they doesn't tolerated with condition of tainting terminate them and for every new pods it should be tolerated. image10

kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
kubectl taint nodes minikube app=myapp:NoExecute

first I create an hello world image and waited to run the we can take a look at our v3 then I create it. We can notice the hello-node is terminated because it doesn't have the requirements. image11

kubectl create -f app_051_v3.yml
kubectl get pods

We can see our hello-node pod is terminated and go back to Pending. And our new pod is Starting the container.

now let's untaint it untaint

kubectl taint nodes minikube app-

This post is also available on DEV.