This series will contain multiple questions regarding kubernetes:
you can ask me anyhthing regarding this series either by commenting below or directly on my linkedIn post here:
Question 1.
List all the Pods in all namespaces sorted by their AGE in ascending order
kubectl get pods --all-namespaces --sort-by=.metadata.creationTimestamp | tac
Question 2.
Create a Static pod with image nginx and make sure that it is recreated/restarted automatically in case of any failure happens
apiVersion: v1
kind: Pod
metadata:
name: static-nginx
spec:
containers:
- name: container-ngix
image: nginx
Question 3.
Create a multi container pod with two containers as mentioned below:
a. Container 1
image: nginx
b. Container 2
image: busybox
Container 2 should sleep for 20 seconds
apiVersion: v1
kind: Pod
metadata:
labels:
run: pod-multi
name: pod-multi
spec:
containers:
- image: nginx
name: containerl
- image: busybox
name: container2
command:["sleep","20"]

Question 4.
Use Nginx 1.28.0 and create a pod named nginx-pod in webserver namespace belonging to the development environment (env=dev) and frontend tier (tier=front)
Declarative Approach:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
namespace: webserver
labels:
env: dev
tier: front
spec:
containers:
- name: nginx
image: nginx:1.28.0
ports:
- containerPort: 80
Save the above yaml and run kubectl apply command to create pod:
kubectl apply -f 4-nginx-manifest.yaml

kubectl -n webserver describe pod nginx-pod

apiVersion: v1
kind: Service
metadata:
name: nginx-pod
namespace: webserver
labels:
env: dev
tier: front
spec:
type: NodePort
selector:
env: dev
tier: front
ports:
- port: 80
targetPort: 80
nodePort: 32049
Save the above yaml and run kubectl apply command to create service:
kubectl apply -f 4-nginx-svc.yaml

Imperative Approach:
Note: nodePort is randomly assigned in Imperative way or it can be changed by using lubectl patch command
kubectl run nginx-pod --image=nginx:1.28.0 --port=80 -n webserver --labels=env=dev,tier=front

Verify the namesapce & labels assigned to the pod:
kubectl get pod -n webserver --show-labels

Verify Nginx version used to create pod:
kubectl -n webserver describe pod nginx-pod

kubectl get svc -n webserver

Note down the random port number and open it in browser, Nginx will be running

Question 5.
Create a new deployment with name webserver-ngx-128 with image nginx:1.28.0 and 1 replica. Next upgrade the deployment to version 1.29.1 using rolling update. Make sure that the version upgrade is recorded in the resource annotation
kubectl create deployment webserver-ngx-128 --image=nginx:1.28.0

kubectl get deploy
kubectl get pod

kubectl describe deploy webserver-ngx-128

Note: —record argument is deprecated and will be permanently removed in new upcoming kubernetes versions
refrence link: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#checking-rollout-history-of-a-deployment
kubectl set image deploy webserver-ngx-128 nginx=nginx:1.29.1 --record

Updated kubectl command for rolling out deployment:
kubectl annotate deploy webserver-ngx-128 kubernetes.io/change-cause="Update nginx to 1.29.1" --overwrite

kubectl describe deploy webserver-ngx-128

kubectl rollout history deploy webserver-ngx-128

Question 6.
Use JSON PATH query to retrieve the oslmages of all the nodes and store it in a file
“all_Nodes_oslmage.txt” at root location
Question 7.
List the Internal IP of all nodes of the cluster and save the result in a file “lnternal_IP_List.txt” at root location





Leave a Reply