DEV Community

Nishant Raj
Nishant Raj

Posted on

"Mastering Kubernetes Pods: Imperative Commands, YAML Configurations, and Troubleshooting Guide"

Kubernetes Pods are the smallest deployable units that you can create and manage in Kubernetes. In this guide, you’ll learn how to:

  1. Create Pods using imperative commands.
  2. Generate YAML configurations for Pods.
  3. Modify and troubleshoot Pods step by step.

Let’s dive in!


Task 1: Create a Pod Using the Imperative Command

Objective: Create a Pod with the name nginx-pod using the nginx image.

Step-by-Step Solution:

  1. Use the following imperative command to create the Pod:
   kubectl run nginx-pod --image=nginx
Enter fullscreen mode Exit fullscreen mode
  1. Verify that the Pod is created by listing all Pods:
   kubectl get pods
Enter fullscreen mode Exit fullscreen mode

You should see an output similar to this:

   NAME         READY   STATUS    RESTARTS   AGE  
   nginx-pod    1/1     Running   0          5s  
Enter fullscreen mode Exit fullscreen mode

Task 2: Generate YAML for the Created Pod

Objective: Convert the Pod created in Task 1 into a YAML configuration file for further customization.

Step-by-Step Solution:

Step 1: Create a YAML file

Use the touch command to create an empty file:

touch pod.yml
Enter fullscreen mode Exit fullscreen mode

Step 2: Write the Pod configuration

Open the file in a text editor (e.g., nano, vim, or VS Code) and add the following YAML:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    env: demo
    type: frontend
spec:
  containers:
  - name: nginx-container
    image: nginx
    ports:
    - containerPort: 80
Enter fullscreen mode Exit fullscreen mode

Step 3: Verify Pods

Run the following command to ensure the existing Pod is running:

kubectl get pods
Enter fullscreen mode Exit fullscreen mode

Update the Pod Name in YAML

If you need to change the Pod name, you can modify the metadata.name field in the YAML. For example, update the Pod name to nginx-pod-updated:

Updated YAML:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod-updated
  labels:
    env: demo
    type: frontend
spec:
  containers:
  - name: nginx-container
    image: nginx
    ports:
    - containerPort: 80
Enter fullscreen mode Exit fullscreen mode

To apply the updated configuration:

kubectl apply -f pod.yml
Enter fullscreen mode Exit fullscreen mode

Create a New Pod from YAML

To create a new Pod with a different name, update the metadata.name field to nginx-new:

Updated YAML:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-new
  labels:
    env: demo
    type: frontend
spec:
  containers:
  - name: nginx-container
    image: nginx
    ports:
    - containerPort: 80
Enter fullscreen mode Exit fullscreen mode

Run the following command to create the Pod:

kubectl apply -f pod.yml
Enter fullscreen mode Exit fullscreen mode

Task 3: Fix YAML Errors

Objective: Troubleshoot and fix errors in a faulty YAML configuration.

Given YAML File:

apiVersion: v1
kind: Pod
metadata:
  labels:
    app: test
  name: redis
spec:
  containers:
  - image: rediss
    name: redis
Enter fullscreen mode Exit fullscreen mode

Step-by-Step Troubleshooting Solution:

Step 1: Save the YAML File

Copy the given YAML into a file:

touch pod.yml
Enter fullscreen mode Exit fullscreen mode

Step 2: Apply the YAML

Run the following command to create the Pod:

kubectl create -f pod.yml
Enter fullscreen mode Exit fullscreen mode

Step 3: Check the Pod Status

If the Pod fails to start, check its status and error message:

kubectl describe pod redis
Enter fullscreen mode Exit fullscreen mode

Example Error Message:

Failed to pull image "rediss": rpc error: code = Unknown desc = Error response from daemon: pull access denied for rediss, repository does not exist or may require 'docker login'
Enter fullscreen mode Exit fullscreen mode

Step 4: Edit the YAML to Fix Errors

Use the kubectl edit command to open the YAML file directly:

kubectl edit pod redis
Enter fullscreen mode Exit fullscreen mode

Update the image field to the correct value:

image: redis
Enter fullscreen mode Exit fullscreen mode

Step 5: Save Changes

Save and exit the editor. Kubernetes will automatically update the running Pod.

Step 6: Verify the Updated Pod

Check the Pod status again:

kubectl get pods
Enter fullscreen mode Exit fullscreen mode

You should see the Pod running successfully.


Conclusion

In this guide, we covered:

  • How to create Pods using imperative commands.
  • Generating and modifying YAML configurations.
  • Troubleshooting common YAML errors step by step.

Pro Tips:

  • Always verify Pods using kubectl get pods.
  • Use kubectl describe to inspect issues.
  • Edit YAML files dynamically with kubectl edit.

By mastering these tasks, you’re well on your way to becoming proficient in Kubernetes Pod management!

References:


Top comments (0)