kubernetes tutorial | Scheduling Pods to Nodes | Node Affinity | Demo

Опубликовано: 30 Октябрь 2024
на канале: VSPARKZ
1,662
42

Certified Kubernetes Administrator
------------------------------------------------------------
kubernetes tutorial | Scheduling Pods to Nodes | Node Affinity | Demo

Description
----------------------

In this video, you are going to learn the concepts of Scheduling pods to nodes using Node Affinity and we are also going to see a demo on the same as well.

Kubernetes - Scheduling Pods to Nodes using NodeAffinity
---------------------------------------------------------------------------------------------------

1. Scheduling Pods to Nodes using “Node Affinity”
2. Scheduling Pods to Nodes Using Labels
3. Recap - NodeSelector
4. Node Affinity
5. Types of Node Affinity
6. Use Cases
7. DEMO: Scheduling Pods to Nodes using “Node Affinity”
8. Thank you

For suggestions/feedback/doubts contact
email: [email protected]

Happy Learning !!!

========================================================================================

USEFUL LINKS
----------------------------

Assigning Pods to Nodes

https://kubernetes.io/docs/concepts/s...

Assigning Pods to Nodes using Node Affinity

https://kubernetes.io/docs/concepts/s...

API References

https://kubernetes.io/docs/reference/...

Kubectl Command Reference

https://kubernetes.io/docs/reference/...

==========================================================================================
#vsparkz #kubernetes #k8s #containers


DEMO STEPS
-------------------------

Step 1: Access & Inspect the Kubernetes Cluster

$ kubectl cluster-info

$ kubectl get nodes

$ kubectl get pods -n kube-system

Step 2: Add custom labels to the Nodes

$ kubectl label nodes worker01.vsparkz.com webserver=nginx workertype=python size=small

$ kubectl label nodes worker02.vsparkz.com webserver=apache workertype=python size=large

Step 3: Create & Schedule a Pod using “Required” Affinity Type

$ kubectl run nginx --image=nginx --dry-run=client -o yaml

Copy the output content and create a file - schedule_using_required.yaml

$ vi schedule_using_required.yaml

_______________________________________________________
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
image: nginx
name: nginx
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
matchExpressions:
key: webserver
operator: In
values:
nginx
_______________________________________________________



$ kubectl apply -f schedule_using_required.yaml

$ kubectl get pods -o wide


Step 4: Create & Schedule a Pod using “Preferred” Affinity Type

$ vi schedule_using_preferred.yaml

_______________________________________________________
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
image: nginx
name: nginx
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
weight: 10
preference:
matchExpressions:
key: size
operator: In
values:
large
_______________________________________________________

$ kubectl apply -f schedule_using_preferred.yaml


Step 5: Create & Schedule a Pod using both “required” & “preferred” Affinity Type

$ vi schedule_using_both.yaml

_______________________________________________________
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
image: nginx
name: nginx
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
matchExpressions:
key: workertype
operator: In
values:
python
preferredDuringSchedulingIgnoredDuringExecution:
weight: 20
preference:
matchExpressions:
key: size
operator: In
values:
large
_______________________________________________________

$ kubectl apply -f schedule_using_both.yaml

$ kubectl get pods -o wide

========================================================================================================================