In this lab:
What is taint in kubernetes and why master is tainted?
Taints are used to influence where workloads are placed (scheduled) within the cluster. A taint on a node tells the Kubernetes scheduler that only pods with matching “tolerations” (an attribute in pod specifications) are allowed to be scheduled on that node. “master” nodes (also known as control plane nodes) are responsible for managing and coordinating the entire cluster.
Lab: Check the master node Taint and un-taint it to schedule the workoad
Note: This is not recommended in production, only for training or testing purpose
kubectl get nodes kubectl describe nodes <provide the master node name from get nodes command>|grep Taint
Un-taint the master node
kubectl taint node <node name> <Taintvalue>- example: kubectl taint node k8s node-role.kubernetes.io/master:NoSchedule- kubectl describe node <node name> |grep Taint
Lab2: Namespace
Create namespace from command line
kubectl create ns labs kubectl describe ns labs kubectl get ns labs -o yaml kubectl delete ns labs //delete command will delete all the resources of namespace
If you want to create namespace from yaml file
use vi editor and open ns.yaml, copy/paste the below code and save it
apiVersion: v1 kind: Namespace metadata: name: labs
apiVersion
: Specifies the API version being used, which isv1
in this case.kind
: Specifies the kind of resource, which is a Namespace.metadata
: Contains metadata about the Namespace.name
: Specifies the name of the Namespace, which is “labs” in this example
Run command
kubectl create -f ns.yaml kubectl get ns kubectl describe ns labs
Lab3: Assign ResourceQuota namespace
git clone https://github.com/amitopenwriteup/k8s.git cd k8s check the rquota.yaml file
kubectl create ns labs kubectl apply -f rquota.yaml kubectl describe ns labs kubectl delete ns labs
Lab 4: assign LimitRange to namespace
kubectl create ns labs kubectl apply -f lrange.yaml kubectl describe ns labs kubectl api-resources kubectl delete ns labs
ResourceQuota
limits the total resources that can be used within the “labs” namespace. It specifies maximum numbers of pods and limits on CPU and memory usage for requests and limits.LimitRange
defines constraints on resources for containers within pods. It specifies limits on CPU and memory for containers, as well as default and minimum values for requests.