> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kubernetes, Docker, and Containerd Frequently Used Commands

> You can manage pods, deployments, and services in Kubernetes cluster, perform image operations with Docker and Containerd. You can view pod logs, update deployments, manage containers, and perform image import/export operations.

## Kubernetes

<AccordionGroup>
  <Accordion title="To Check if kubelet is Running">
    ```bash theme={null}
    systemctl status kubelet
    ```
  </Accordion>

  <Accordion title="To See Details on Linux System When There is an Error in kubelet">
    ```bash theme={null}
    journalctl -xeu kubelet
    ```
  </Accordion>

  <Accordion title="To See Details from kubelet When There is an Error in kubelet">
    ```bash theme={null}
    kubectl get events --all-namespaces --sort-by='.metadata.creationTimestamp'
    ```
  </Accordion>

  <Accordion title="To See Logs When There is an Error in a Specific Pod">
    ```bash theme={null}
    kubectl logs <POD_NAME> -n <NAMESPACE>
    ```
  </Accordion>

  <Accordion title="To See Previous Pod's Logs If Pod Was Restarted">
    ```bash theme={null}
    kubectl logs --previous <POD_NAME> -n apinizer
    ```
  </Accordion>

  <Accordion title="To See If Pod Has General Problem">
    ```bash theme={null}
    kubectl describe pod <POD_NAME> -n apinizer
    ```
  </Accordion>

  <Accordion title="To Enter the Relevant Pod When an Operation is Wanted on a Running Pod">
    ```bash theme={null}
    kubectl exec -it <POD_NAME> -n prod /bin/bash
    ```
  </Accordion>

  <Accordion title="Sending Request to a Specific Address Without Entering Pod">
    ```bash theme={null}
    kubectl exec -it <POD_NAME> -n prod -- curl x.y.gov.tr
    ```
  </Accordion>

  <Accordion title="To Restart Pods Under a Deployment">
    ```bash theme={null}
    kubectl rollout restart deployment manager -n apinizer
    ```
  </Accordion>

  <Accordion title="To Scale Pod Count Under a Deployment to Zero">
    ```bash theme={null}
    kubectl scale deploy cache -n prod --replicas=0
    ```
  </Accordion>

  <Accordion title="To Delete a Deployment">
    ```bash theme={null}
    kubectl delete -f apinizer-deployment.yaml
    ```
  </Accordion>

  <Accordion title="To Force Delete If Pod is Stuck in Terminating">
    ```bash theme={null}
    kubectl delete pod <POD_NAME> -n apinizer --grace-period=0 --force
    ```
  </Accordion>

  <Accordion title="To Update Version">
    <Note>
      After pulling images to servers, the following commands are used. This works like "vi" editor, ":wq" should be used to save and exit.
    </Note>

    ```bash theme={null}
    kubectl edit deployment manager -n apinizer
    kubectl edit deployment cache -n prod
    kubectl edit deployment worker -n prod
    ```
  </Accordion>

  <Accordion title="To Clean Pods in Evicted State">
    ```bash theme={null}
    kubectl get pod -n prod | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n prod
    ```
  </Accordion>

  <Accordion title="Preventing Pod from Running on Specific Nodes Using Kubernetes Node Affinity">
    ```yaml theme={null}
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: NotIn
              values:
              - kuberdemo55
              - kuberdemo56
    ```
  </Accordion>

  <Accordion title="Displaying The Most Frequent Threads">
    If the Java process is running as PID 1:

    ```bash theme={null}
    kubectl exec -it -n apinizer apimanager-69684b6fd9-5nlhl -- sh -c   'ls /proc/1/task/*/comm 2>/dev/null | xargs cat | sort | uniq -c | sort -rn | head -30'
    ```

    If the Java PID is not known:

    ```bash theme={null}
    oc exec -n apinizer worker-84f9b77756-wd2n9 -- sh -c 'JPID=$(pgrep -f java | head -1); ls /proc/$JPID/task/*/comm | xargs cat | sort | uniq -c | sort -rn | head -30'
    ```
  </Accordion>
</AccordionGroup>

## Docker

<AccordionGroup>
  <Accordion title="Listing Images">
    ```bash theme={null}
    docker images
    ```
  </Accordion>

  <Accordion title="Listing All Containers">
    ```bash theme={null}
    docker ps -a
    ```
  </Accordion>

  <Accordion title="Image Pull Operation">
    ```bash theme={null}
    sudo docker pull apinizercloud/manager:2024.xx.0
    ```
  </Accordion>

  <Accordion title="Image Export">
    ```bash theme={null}
    sudo docker save apinizercloud/manager:2024.xx.0 > manager_2024.xx.0.tar
    ```
  </Accordion>

  <Accordion title="Image Import">
    ```bash theme={null}
    sudo docker load < manager_2024.xx.0.tar
    ```
  </Accordion>
</AccordionGroup>

## Containerd

<AccordionGroup>
  <Accordion title="Listing Namespaces">
    ```bash theme={null}
    sudo ctr namespaces list
    ```
  </Accordion>

  <Accordion title="Listing Containers by Namespace">
    ```bash theme={null}
    sudo ctr --namespace k8s.io containers ls
    ```
  </Accordion>

  <Accordion title="Listing Images by Namespace Apinizer Images">
    ```bash theme={null}
    sudo ctr -n k8s.io images list | grep apinizer
    ```
  </Accordion>

  <Accordion title="Image Pull Operation">
    ```bash theme={null}
    sudo ctr --namespace k8s.io images pull docker.io/apinizercloud/manager:2024.05.0
    ```
  </Accordion>

  <Accordion title="Image Export">
    ```bash theme={null}
    sudo ctr -n k8s.io images export /tmp/manager:2024.05.0.tar docker.io/apinizercloud/manager:2024.05.0
    ```
  </Accordion>

  <Accordion title="Image Import">
    ```bash theme={null}
    sudo ctr --namespace k8s.io images import /tmp/manager:2024.05.0.tar
    ```
  </Accordion>
</AccordionGroup>
