Kubernetes, Docker ve Containerd Sık Kullanılan Komutlar
Kubernetes
kubelet Çalışıyor mu Kontrol Etmek İçin
systemctl status kubelet
kubelet'te Bir Hata Olduğunda Linux Sistem Üzerinden Detay Görmek İçin
journalctl -xeu kubelet
kubelet'te Bir Hata Olduğunda kubelet Üzerinden Detay Görmek İçin
kubectl get events --all-namespaces --sort-by='.metadata.creationTimestamp'
Pod Özelinde Bir Hata Olduğunda Logları Görmek İçin
kubectl logs <POD_NAME> -n <NAMESPACE>
Pod Baştan Başlatıldıysa Bir Önceki Pod'un Loglarını Görmek İçin
kubectl logs --previous <POD_NAME> -n apinizer
Pod'un Genel Problemi Var mı Görmek İçin
kubectl describe pod <POD_NAME> -n apinizer
Çalışan Pod Üzerinde Bir İşlem Yapılmak İsteniyor, İlgili Pod'a Girebilmek İçin
kubectl exec -it <POD_NAME> -n prod /bin/bash
Pod İçerisine Girmeden Belirli Bir Adrese İstek Atmak
kubectl exec -it <POD_NAME> -n prod -- curl x.y.gov.tr
Bir Deployment Altındaki Podları Restart Etmek İçin
kubectl rollout restart deployment manager -n apinizer
Bir Deployment Altındaki Podların Sayısını Sıfıra Çekmek İçin
kubectl scale deploy cache -n prod --replicas=0
Bir Deployment'ı Silmek İçin
kubectl delete -f apinizer-deployment.yaml
Pod Terminating'te Takıldıysa Silmeyi Zorlamak İçin
kubectl delete pod <POD_NAME> -n apinizer --grace-period=0 --force
Versiyon Güncellemek İçin
not
İ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.
kubectl edit deployment manager -n apinizer
kubectl edit deployment cache -n prod
kubectl edit deployment worker -n prod
Evicted Durumdaki Podları Temizlemek İçin
kubectl get pod -n prod | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n prod
Kubernetes Node Affinity Kullanarak Pod'un Belirli Nodelar Üzerinde Çalışmasını Engelleme
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: NotIn
values:
- kuberdemo55
- kuberdemo56
En Çok Açılan Threadlerin Hangisi Olduğunu Gösterme
Java prosesi PID 1 olarak çalışıyorsa:
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:
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'
Docker
Image Listeleme
docker images
Tüm Container'ları Listeleme
docker ps -a
Image Pull İşlemi
sudo docker pull apinizercloud/manager:2024.xx.0
Image Export
sudo docker save apinizercloud/manager:2024.xx.0 > manager_2024.xx.0.tar
Image Import
sudo docker load < manager_2024.xx.0.tar
Containerd
Namespace Listeleme
sudo ctr namespaces list
Container'ları Listeleme Namespace Göre
sudo ctr --namespace k8s.io containers ls
Image Listeleme Namespace Göre Apinizer Image'ları
sudo ctr -n k8s.io images list | grep apinizer
Image Pull İşlemi
sudo ctr --namespace k8s.io images pull docker.io/apinizercloud/manager:2024.05.0
Image Export
sudo ctr -n k8s.io images export /tmp/manager:2024.05.0.tar docker.io/apinizercloud/manager:2024.05.0
Image Import
sudo ctr --namespace k8s.io images import /tmp/manager:2024.05.0.tar