Link Search Menu Expand Document

K8S Definition File

A K8s definition file always contains the 4 top-level fields:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
    containers:
    - name: my-container
        image: my-image

apiVersion indicates the API version used by the object. In this case, it is v1, which means we are using the first stable version of the Kubernetes API.

kind: Pod

kind specifies the type of object. In this case, it is Pod, which means we are creating a Pod object.

metadata:
  name: my-pod
  labels:
    app: my-app
    type: frontend

metadata contains metadata about the object, such as its name. In this case, we set the Pod name to my-pod.

spec:
    containers:  # list of containers in the Pod
    - name: my-container
        image: my-image # Image on the Docker repository

spec contains the specification of the object. In this case, we define the containers that will run in the Pod. We create a single container named my-container with the image my-image.

KindVersion
Podv1
Servicev1
Deploymentapps/v1
StatefulSetapps/v1
ReplicaSetapps/v1

Command to create a Pod from a definition file:

kubectl create -f my-pod.yaml

Command to show the list of Pods:

kubectl get pods

Detailed information about a Pod:

kubectl describe pod my-pod

Delete a Pod:

kubectl delete pod my-pod

Extract the definition to a file:

kubectl get pod my-pod -o yaml > my-pod-new.yaml

Modify the properties of the pod:

kubectl edit pod my-pod

Run a Pod without a definition file

kubectl run my-pod --image=my-image

This command will create a Pod named my-pod using the specified image my-image. This is a quick way to create a Pod without needing to write a full definition file.

kubectl replace --force -f my-pod.yaml

This command will replace the existing Pod with the definition provided in the my-pod.yaml file. The --force flag is used to delete the existing Pod and create a new one with the updated definition. This is useful for updating the Pod configuration without deleting it first.

Exec

kubectl exec -it my-pod -- /bin/bash

This command will open an interactive terminal session inside the my-pod Pod, allowing you to run commands within the container.

kubectl exec my-pod -- ls /app

This command will execute the ls /app command inside the my-pod Pod and display the output.

kubectl exec my-pod -- cat /etc/hosts

This command will display the contents of the /etc/hosts file inside the my-pod Pod.

kubectl exec my-pod -- env

This command will display the environment variables set in the my-pod Pod.