# Kubernetes ## `kubectl` Command Reference ### Get State of API Resources ```bash kubectl api-resources ``` ### Node Management - **Show all nodes:** ```bash kubectl get node ``` ### Namespace Management - **List all namespaces:** ```bash kubectl get namespaces ``` ```bash kubectl get ns ``` - **Create a custom namespace:** ```bash kubectl create ns ``` ### Pod Management - **Get the list of pods in the default namespace:** ```bash kubectl get pod ``` - **Get the list of pods in the default namespace with full information:** ```bash kubectl get pod -o wide ``` - **Get the list of pods in a custom namespace with full information:** ```bash kubectl get pod -o wide -n ``` ### Running a Pod - **Run a new pod:** ```bash kubectl run { --image=, # Specifies the container image to use --port=, # Specifies the port that the container exposes -n , # Specifies the namespace --env="KEY=VALUE", # Sets environment variables in the container --command, # Treats the rest of the arguments as the command to run in the container --replicas=, # Specifies the number of replicas for the deployment --labels="key=value,key2=value2", # Adds labels to the pod(s) --dry-run=client, # Prints the object that would be sent, without creating it --restart=, # Determines the restart policy for the pod --overrides='', # Provides a JSON override for the generated object --image-pull-policy=, # Specifies the image pull policy (Always, IfNotPresent, Never) --limits=cpu=,memory=, # Specifies resource limits for the container --requests=cpu=,memory= # Specifies resource requests for the container } ``` - *Example:* ```bash kubectl run mypod --image=nginx --port=80 -n mynamespace \ --env="ENV_VAR_NAME=VALUE" --command -- nginx -g "daemon off;" \ --replicas=3 --labels="app=myapp,env=prod" --dry-run=client \ --restart=Always --overrides='{"spec": {"containers": [{"name": "nginx", "image": "nginx"}]}}' \ --image-pull-policy=IfNotPresent --limits=cpu=100m,memory=256Mi \ --requests=cpu=50m,memory=128Mi ``` ### Deleting a Pod - **Delete a pod in a custom namespace:** ```bash kubectl delete pod -n ``` ### API Resource Documentation - **Get documentation of an API resource:** ```bash kubectl explain ``` - *Example:* ```bash kubectl explain pod ``` ### Logging and Pod Information - **Get and follow logs of a pod (pod must be created and running):** ```bash kubectl logs -f -n ``` - **Get logs and state information of a pod (works at any time):** ```bash kubectl describe pod -n ``` ### Apply Yaml File ```bash kubectl apply -f -n ``` ### View Pod Details ```bash kubectl get pod -n my-ns -o yaml ``` This command retrieves and displays the YAML configuration of the pod `testpod1` in the namespace `my-ns`. ### Label a Node ```bash kubectl label node kubernetes.io/= kubectl get nodes --show-labels ``` ### Retrieve the ReplicaSet To retrieve information about the ReplicaSet in the `my-ns` namespace, use the following command: ```bash kubectl get rs -n my-ns ``` ### Delete All Pods in the Namespace To delete all pods in the `my-ns` namespace, use the following command: ```bash kubectl delete pod --all -n my-ns ``` ### Change the Replica Count to 5 To scale the ReplicaSet to 5 replicas, you can use one of the following methods: 1. **Using the `kubectl scale` Command** ```bash kubectl scale rs my-app --replicas=5 -n my-ns ```