Challenge 1
Welcome to the Kubernetes challenge, your task is to follow the below steps and complete them successfully.
Environment Setup
Check whether docker & minikube are properly installed and configured.
Start Minikube and execute this command to sync host docker with minikube docker minikube -p minikube docker-env and eval $(minikube docker-env)
Step-1
Create a pod object using kubectl run command with google's sample image: gcr.io/google-samples/kubernetes-bootcamp:v1 and expose it on port 8080, name the pod as firstapp.
Check if the pod creation is successful by running the command: kubectl get pod firstapp
Step-2
Expose the application to the local VM by creating a Service object of type NodePort. Check if the service is created by running the command: kubectl get svc firstapp
Step-3
Create another deployment using a 'YAML' file, create a deployment.yaml file that contains information of the number of replicas and the images to be used. Use an nginx image to deploy. Name the deployment as 'nginx'
Check if the deployment is created by running the command: kubectl get deployment nginx
Step-4
Create a NodePort type service using a 'YAML' file, create a service.yaml file that contains information of the type of service and the port numbers. Name the Service nginx-svc and use port 30080 for nodePort.
Check if the service is created by running the command: kubectl get svc nginx-svc
Step-5
Use kubectl exec command to get inside the running nginx pod and write the string 'Welcome to fresco nginx pod' to /usr/share/nginx/html/index.html file
Let's Solve the problem statement...
minikube start
minikube -p minikube docker-env eval $(minikube docker-env)
Step-1:
To create a pod object using kubectl run command with google's sample image, run the following command:
kubectl run firstapp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080
To check if the pod creation is successful, run the following command:
kubectl get pod firstapp
Step-2:
To expose the application to the local VM by creating a Service object of type NodePort, run the following command:
kubectl expose pod firstapp --type=NodePort --port=8080 --name=firstapp
To check if the service is created, run the following command:
kubectl get svc firstapp
Step-3:
To create another deployment using a YAML file, create a deployment.yaml file with the following content:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
To create the deployment, run the following command:
kubectl apply -f deployment.yaml
To check if the deployment is created, run the following command:
kubectl get deployment nginx
Step-4:
To create a NodePort type service using a YAML file, create a service.yaml file with the following content:
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
type: NodePortTo create the service, run the following command:
kubectl apply -f service.yaml
To check if the service is created, run the following command:
kubectl get svc nginx-svc
Step-5:
To get inside the running nginx pod and write the string 'Welcome to nginx pod' to /usr/share/nginx/html/index.html file, run the following command:
kubectl exec -it firstapp -- /bin/bash
echo 'Welcome to nginx pod' > /usr/share/nginx/html/index.html
exitcheck the deployment by going to the required url
minikube service nginx-svc --url -> this would give a url, go to that to check the html
"firstapp" is the name of the nginx pod that was created earlier
IMP: If the folder not present you can create them using below commands then try the above command.
sudo mkdir -p /usr/share/nginx/html && sudo touch /usr/share/nginx/html/index.html
This command will first create the directory /usr/share/nginx/html using the mkdir command. The -p option is used to create parent directories as needed.
Then, the touch command is used to create an empty file named index.html inside the /usr/share/nginx/html directory.
The sudo command is used to run these commands with administrative privileges.
Comments
Post a Comment