> ## 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 ve Containerd Sık Kullanılan Komutlar

> Kubernetes cluster'ında pod, deployment ve servis yönetimi yapabilir, Docker ve Containerd ile image işlemlerini gerçekleştirebilir. Pod loglarını görüntüleyebilir, deployment'ları güncelleyebilir, container'ları yönetebilir ve image import/export işlemlerini yapabilir.

## Kubernetes

<AccordionGroup>
  <Accordion title="kubelet Çalışıyor mu Kontrol Etmek İçin">
    ```bash theme={null}
    systemctl status kubelet
    ```
  </Accordion>

  <Accordion title="kubelet'te Bir Hata Olduğunda Linux Sistem Üzerinden Detay Görmek İçin">
    ```bash theme={null}
    journalctl -xeu kubelet
    ```
  </Accordion>

  <Accordion title="kubelet'te Bir Hata Olduğunda kubelet Üzerinden Detay Görmek İçin">
    ```bash theme={null}
    kubectl get events --all-namespaces --sort-by='.metadata.creationTimestamp'
    ```
  </Accordion>

  <Accordion title="Pod Özelinde Bir Hata Olduğunda Logları Görmek İçin">
    ```bash theme={null}
    kubectl logs <POD_NAME> -n <NAMESPACE>
    ```
  </Accordion>

  <Accordion title="Pod Baştan Başlatıldıysa Bir Önceki Pod'un Loglarını Görmek İçin">
    ```bash theme={null}
    kubectl logs --previous <POD_NAME> -n apinizer
    ```
  </Accordion>

  <Accordion title="Pod'un Genel Problemi Var mı Görmek İçin">
    ```bash theme={null}
    kubectl describe pod <POD_NAME> -n apinizer
    ```
  </Accordion>

  <Accordion title="Çalışan Pod Üzerinde Bir İşlem Yapılmak İsteniyor, İlgili Pod'a Girebilmek İçin">
    ```bash theme={null}
    kubectl exec -it <POD_NAME> -n prod /bin/bash
    ```
  </Accordion>

  <Accordion title="Pod İçerisine Girmeden Belirli Bir Adrese İstek Atmak">
    ```bash theme={null}
    kubectl exec -it <POD_NAME> -n prod -- curl x.y.gov.tr
    ```
  </Accordion>

  <Accordion title="Bir Deployment Altındaki Podları Restart Etmek İçin">
    ```bash theme={null}
    kubectl rollout restart deployment manager -n apinizer
    ```
  </Accordion>

  <Accordion title="Bir Deployment Altındaki Podların Sayısını Sıfıra Çekmek İçin">
    ```bash theme={null}
    kubectl scale deploy cache -n prod --replicas=0
    ```
  </Accordion>

  <Accordion title="Bir Deployment'ı Silmek İçin">
    ```bash theme={null}
    kubectl delete -f apinizer-deployment.yaml
    ```
  </Accordion>

  <Accordion title="Pod Terminating'te Takıldıysa Silmeyi Zorlamak İçin">
    ```bash theme={null}
    kubectl delete pod <POD_NAME> -n apinizer --grace-period=0 --force
    ```
  </Accordion>

  <Accordion title="Versiyon Güncellemek İçin">
    <Note>
      İmajları sunuculara çektikten sonra aşağıdaki komutlar kullanılır. Burası "vi" editörü gibi çalışır, kaydederek çıkmak için ":wq" kullanılmalıdır.
    </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="Evicted Durumdaki Podları Temizlemek İçin">
    ```bash theme={null}
    kubectl get pod -n prod | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n prod
    ```
  </Accordion>

  <Accordion title="Kubernetes Node Affinity Kullanarak Pod'un Belirli Nodelar Üzerinde Çalışmasını Engelleme">
    ```yaml theme={null}
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: NotIn
              values:
              - kuberdemo55
              - kuberdemo56
    ```
  </Accordion>

  <Accordion title="En Çok Açılan Threadlerin Hangisi Olduğunu Gösterme">
    Java prosesi PID 1 olarak çalışıyorsa:

    ```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'
    ```

    Java PID bilinmiyorsa:

    ```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="Image Listeleme">
    ```bash theme={null}
    docker images
    ```
  </Accordion>

  <Accordion title="Tüm Container'ları Listeleme">
    ```bash theme={null}
    docker ps -a
    ```
  </Accordion>

  <Accordion title="Image Pull İşlemi">
    ```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="Namespace Listeleme">
    ```bash theme={null}
    sudo ctr namespaces list
    ```
  </Accordion>

  <Accordion title="Container'ları Listeleme Namespace Göre">
    ```bash theme={null}
    sudo ctr --namespace k8s.io containers ls
    ```
  </Accordion>

  <Accordion title="Image Listeleme Namespace Göre Apinizer Image'ları">
    ```bash theme={null}
    sudo ctr -n k8s.io images list | grep apinizer
    ```
  </Accordion>

  <Accordion title="Image Pull İşlemi">
    ```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>
