<img
title="image"
loading="lazy"
decoding="async"
class="img-fluid img-center"
width="600"
height="400"
src="/images/practice/k8slabs/k8slab105_hu01b897a1db20e540e6c1ddbdfb5692e3_147056_600x400_fit_q100_h2_box.webp"
alt="image"
onerror="this.onerror='null';this.src='\/images\/practice\/k8slabs\/k8slab105_hu01b897a1db20e540e6c1ddbdfb5692e3_147056_600x400_fit_q100_box.jpeg'" />
In case you prefer a video, check below our YouTube video for this lab
Task: Create Kubernetes cluster with 3 worker nodes.
Master: 1 node
Worker: 2 node
Create docker hub account. Docker Hub if you already have one skip this step
Open Play with Kubernetes login with your docker hub account.
Click on start
It will start a 4 hr session
create three instance
click on + ADD NEW INSTANCE three time to add three instances
<img
title="image"
loading="lazy"
decoding="async"
class="img-fluid img-center"
width="600"
height="400"
src="/images/practice/k8slabs/pwkaddnode_hu5b589b6b0073ab182d99a0ab899ae088_102350_600x400_fit_q100_h2_box_3.webp"
alt="image"
onerror="this.onerror='null';this.src='\/images\/practice\/k8slabs\/pwkaddnode_hu5b589b6b0073ab182d99a0ab899ae088_102350_600x400_fit_q100_box_3.png'" />
on first instance enter below command, this node will be master node
kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16
enter below command on first node
kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
capture output of kubeadm join XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<img
title="image"
loading="lazy"
decoding="async"
class="img-fluid img-center"
width="600"
height="400"
src="/images/practice/k8slabs/kubejoin_huedaf8639d77752ea5865acd48b92fe69_99927_600x400_fit_q100_h2_box_3.webp"
alt="image"
onerror="this.onerror='null';this.src='\/images\/practice\/k8slabs\/kubejoin_huedaf8639d77752ea5865acd48b92fe69_99927_600x400_fit_q100_box_3.png'" />
enter captured command in second and third node
kubeadm join XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<img
title="image"
loading="lazy"
decoding="async"
class="img-fluid img-center"
width="600"
height="400"
src="/images/practice/k8slabs/kubejoinnode2_hu90366f301af66ee28da0673c05fc1217_115154_600x400_fit_q100_h2_box_3.webp"
alt="image"
onerror="this.onerror='null';this.src='\/images\/practice\/k8slabs\/kubejoinnode2_hu90366f301af66ee28da0673c05fc1217_115154_600x400_fit_q100_box_3.png'" />
<img
title="image"
loading="lazy"
decoding="async"
class="img-fluid img-center"
width="600"
height="400"
src="/images/practice/k8slabs/kubejoinnode3_huc520d22b9a0fead579f0cf7683ac26c5_115366_600x400_fit_q100_h2_box_3.webp"
alt="image"
onerror="this.onerror='null';this.src='\/images\/practice\/k8slabs\/kubejoinnode3_huc520d22b9a0fead579f0cf7683ac26c5_115366_600x400_fit_q100_box_3.png'" />
Check node status, all 3 nodes should be in ready state
<img
title="image"
loading="lazy"
decoding="async"
class="img-fluid img-center"
width="600"
height="400"
src="/images/practice/k8slabs/kubegetnodes3_hub672d9478cbf5bfdc86c27f46993b63e_43481_600x400_fit_q100_h2_box_3.webp"
alt="image"
onerror="this.onerror='null';this.src='\/images\/practice\/k8slabs\/kubegetnodes3_hub672d9478cbf5bfdc86c27f46993b63e_43481_600x400_fit_q100_box_3.png'" />
Task: Create a Deployment with below settings
name: demo
image: nginx
replca: 3
labels:
app: demo
type: web
verify with below command
kubectl get deployment
vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
labels:
app: demo
type: web
spec:
replicas: 3
selector:
matchLabels:
type: web
template:
metadata:
labels:
type: web
spec:
containers:
- name: demo-nginx
image: nginx
ports:
- containerPort: 80
kubectl apply -f deployment.yaml
this command will create deployment using seeting in yaml file
Task: How many pods are created by Deployment?
kubectl get rs
kubectl get pods
Task: Which nodes are pods running on?
kubectl get pods -o wide
Task: Find details on Deployment created in this lab
kubectl describe deployment demo
this command will provide details of deployment
Task: Use kubectl command to get Deployment details in yaml format.
kubectl get deployment demo -o yaml
Task: Use kubectl command to get Deployment details in json format.
```javascript
kubectl get deployment demo -o json
Task: Scale Deployment to 5 replicas
verify with below command
kubectl get deployment
```javascript
kubectl scale deployment demo --replicas=5
Task: How many pods are managed by Deployment?
kubectl get pods
Task: Confirm that pod is managed by Replicaset
kubectl describe pods demo-XXXX-YYY
kubectl describe rs <name of Replicaset from previous step>
Task: Delete Deployment we created in this lab
kubectl delete deployment demo
Task: Delete all open nodes/instances and close session
Select the node and click on DELETE
Repeat same for any other open nodes
click close session