1-) Node'ların listelenmesi
kubectl get nodes
ve(ya) kubectl get no
Not: Diğer örneklerde de göreceğiniz gibi, bazı parametreler varsayılan olarak kısaltmalara sahiptir. İki kullanımın output olarak herhangi bir farkı yoktur.
Aynı komut "-o wide" parametresiyle birlikte kullanıldığında Internal-External IP, işletim sistemi, çekirdek versiyonu ve Docker Runtime bilgileri de gösterilir.
"--show-labels" parametresi ile label bilgileri görüntülenebilir. Bu parametreden aldığınız sonucu "--selector" parametresi ile birlikte kullanarak "label" bazlı listeleme yapabilirsiniz.
Listeme işlemlerinde JSON bazlı filtrelemeler de yapılabilmektedir. Örneğin sadece Internal IP bilgilerini getirmek için:
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}'
gibi bir kullanım mümkündür.
2-) Node'lar hakkında bilgi alma
kubectl describe nodes
ve(ya) kubectl describe no
Herhangi bir node adı belirtilmediğinde mevcut cluster üzerinde çalışan tüm node'lar sırasıyla listelenir. Argüman olarak bir node adı verildiğinde ise o node'a ait detaylı bilgiler görüntülenir.
Bir node hakkında çok daha ayrıntılı bilgi alabilmek için "get" ile birlikte "-o yaml" parametresi de kullanılabilir. Bu şekilde bilgiler JSON formatında aktarılır.
kubectl get no -o yaml
3-) Node üzerinde değişiklik yapma
kubectl edit no node_adı
1-) Yeni Pod oluşturma
kubectl create -f dosya_adı
ve(ya) kubectl apply -f dosya_adı
### Not: create "Imperative", apply "Declarative" mantığıyla çalışır.
Pod oluşturulurken mevcut YAML dosyası kullanlabileceği gibi "run" ve belirleyici diğer parametreler ile birlikte de aynı işlem gerçekleştirilebilir.
kubectl run pod_adı --image=redis
2-) Pod'ların listelenmesi
kubectl get pods
ve(ya) kubectl get po
"-o wide" kullanımı pod'lar için de geçerlidir.
"--show-labels" kullanımı burada da geçerlidir. Label bilgisine göre "-l" parametresi ile filtreleme yapılabilir.
3-) Pod'lar hakkında bilgi alma
kubectl describe pods
ve(ya) kubectl describe po
Pod adı belirtilmediği sürece tüm pod'ların bilgisi listelenir. Özellikle troubleshooting gerektiren durumlarda ilk başvurulan komutlardan birisidir.
4-) Pod'ların silinmesi
kubectl delete pods
ve(ya) kubectl delete po
Çoklu silmeler için Pod isimleri aralarında boşluk bırakalarak tanımlanabilir.
5-) Pod üzerinde değişiklik yapma
kubectl edit po pod_adı
6-) Pod'u interaktif modda başlatma
kubectl run -i --tty busybox --image=busybox -- sh
7-) Yeni başlatılan Pod'un özelliklerini YAML formatında dosyaya aktarma
kubectl run pod_adı --image=alpine -o yaml > my_pod.yaml
8-) Pod üzerinde komut çalıştırma
kubectl exec pod_adı -- komut
9-) Pod'a Probe kullanımı ekleme
Üç çeşit Probe vardır:
-Liveness Probe: Pod istenildiği gibi çalışıyor mu kontrol edilir. Hata kodu alınırsa container silinir ve yeniden başlatılır.
-Readiness Probe: Pod trafik almaya uygun mu kontrol edilir. Hata kodu dönerse bu Pod'a trafik yönlendirmez.
-Startup Probe: Pod'un içerisindeki uygulama istenildiği şekilde çalışıyor mu kontrol edilir.
Üç çeşit Probe yöntemi vardır:
```
-ExecAction
apiVersion: v1
kind: Pod
metadata: exec-probe
spec:
containers:
- name: exec-pod
image: nginx
args:
- /bin/sh
- -c
- touch /tmp/deneme.txt; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/deneme.txt
initialDelaySeconds: 5
periodSeconds: 5
-HTTPGet
apiVersion: v1
kind: Pod
metadata:
name: httget-probe
spec:
containers:
- name: probe-pod
image: httpd:2.4
livenessProbe:
httppGet:
path: /index.html
port: 80
initialDelaySeconds: 5
periodSeconds: 5
-TCPSocket
apiVersion: v1
kind: Pod
metadata:
name: tcpsocket-probe
spec:
containers:
- name: tcpsocket-pod
image: nginx
ports:
- containerPort: 80
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 5
periodSeconds: 5
```
1-) Yeni namespace oluşturma
kubectl create namespace namespace_adı
2-) Namespace'lerin listelenmesi
kubectl get namespaces
ve(ya) kubectl get ns
"-o yaml" parametresi namespace'ler için de aktiftir.
3-) Namespace'ler hakkında bilgi alma
kubectl describe namespaces
ve(ya) kubectl describe ns
4-) Namespace'lerin silinmesi
kubectl delete namespace namespace_adı
ve(ya) kubectl delete ns namespace_adı
1-) Yeni Deployment oluşturma
kubectl create deployment deployment_adı --image=imaj_adı
2-) Deployment'ların listelenmesi
kubectl get deployments
ve(ya) kubectl get deploy
Kullanılan Docker imajları ve "selector" bilgisi "-o wide" ile görüntülenebilir.
"-o yaml" parametresi aynı şekilde Deployment'lar için de kullanılabilir.
3-) Deployment'lar hakkında bilgi alma
kubectl describe deployments
ve(ya) kubectl describe deploy
Yine troubleshoot durumlarında kullanılan başlıca komutlardan birisidir.
4-) Deployment'ların silinmesi
kubectl delete deployments deployment_adı
ve(ya) kubectl delete deploy deployment_adı
1-) Yeni Service oluşturma
kubectl create service loadbalancer mylb --tcp="80:8080"
Ana şablon "kubectl create service" ile başlar, sonrasında service tipi belirtilmelidir. Bu örnekte "loadbalancer" tipi seçilmiştir. Diğer tipler:
- clusterip
- externalname
- nodeport
Sonrasında service adı ve port tanımlanır.
2-) Service'lerin listelenmesi
kubectl get services
ve(ya) kubectl get svc
"-o wide" parametresi "selector" bilgisini getirir. "-o yaml" kullanımı servisler için de geçerlidir.
"--show-labels" parametresi ile servise atanan label bilgileri de görüntülenebilir.
3-) Service'ler hakkında bilgi alma
kubectl describe services service_adı
ve(ya) kubectl describe svc service_adı
4-) Service üzerinde değişiklik yapma
kubectl edit service
ve(ya) kubectl edit svc
5-) Service'lerin silinmesi
kubectl delete services service_adı
ve(ya) kubectl delete svc service_adı
1-) DaemonSet'lerin listelenmesi
kubectl get daemonset
ve(ya) kubectl get ds
2-) DaemonSet hakkında bilgi alma
kubectl describe daemonset
ve(ya) kubectl describe ds
3-) DaemonSet üzerinde değişiklik yapma
kubectl edit daemonset
ve(veya) kubectl edit ds
4-) DaemonSet'lerin silinmesi
kubectl delete daemonset daemonsets_adı
ve(ya) kubectl delete ds daemonsets_adı
1-) PersistentVolume'ların listelenmesi
kubectl get persistentvolume
ve(ya) kubectl get pv
2-) PersistentVolume hakkında bilgi alma
kubectl describe persistentvolume
ve(ya) kubectl describe pv
3-) PersistentVolume'lerin silinmesi
kubectl delete persistentvolume persistentvolume_adı
ve(ya) kubectl delete pv persistentvolume_adı
1-) PersistentVolumeClaim'ların listelenmesi
kubectl get persistentvolumeclaim
ve(ya) kubectl get pvc
2-) PersistentVolumeClaim'ler hakkında bilgi alma
kubectl describe persistentvolumeclaim
ve(ya) kubectl describe pvc
3-) PersistentVolumeClaim'lerin silinmesi
kubectl delete persistentvolumeclaim persistentvolumeclaim_adı
ve(ya) kubectl delete pvc persistentvolumeclaim_adı
1-) ReplicaSets listelenmesi
kubectl get replicasets
ve(ya) kubectl get rs
2-) ReplicaSets hakkında bilgi alma
kubectl describe replicasets
ve(ya) kubectl describe rs
3-) ReplicaSet'lerin silinmesi
kubectl delete replicaset(s) replicaset_adı
ve(ya) kubectl delete rs replicaset_adı
1-) ConfigMap'lerin listelenmesi
kubectl get configmaps
ve(ya) kubectl get cm
2-) ConfigMap'ler hakkında bilgi alma
kubectl describe configmaps configmap_adı
ve(ya) kubectl describe cm configmap_adı
1-) Secret'ların listelenmesi
kubectl get secret
ve(ya) kubectl get secrets
1-) Rollerin listelenmesi
kubectl get roles
1-) Event'ların listelenmesi
kubectl get events
ve(ya) kubectl get ev
2-) Event'ların anlık takip edilmesi
kubectl get events -w
ve(ya) kubectl get ev -w
# Logs
1-) Pod loglarının görüntülenmesi
kubectl logs pod_adı
2-) Son X satır log'ların listelenmesi
kubectl logs --tail=X pod_adı
3-) Son X saatlik - X dakikalık log'ların listelenmesi
kubectl logs --since=X pod_adı
Saat bazlı listelemede "h" kullanılır,
Dakika bazlı listelemede "m" kullanılır.
4-) Belirli bir selector'a sahip pod'lara ait log'ların listelenmesi
kubectl logs --selector=selector_kriterleri
Örneğin label olarak run=main_svc
belirtilmiş pod'larınızın tümünden log çıktısı almak için
kubectl logs --selector=run=main_svc
yazabilirsiniz.
1-) ServiceAccount'ların görüntülenmesi
kubectl get serviceaccounts
ve(ya) kubectl get sa
2-) Bilgilerin .yaml formatında alınması
kubectl get serviceaccounts -o yaml
ve(ya) kubectl get sa -o yaml
1-) Component'lar farklı namespace'ler altında oluşturulmuş olabilir, listelemeler varsayılan olarak "default" namespace'i baz alınarak yapılır. Bu tarz durumlarda "-n" parametresi ile hedef namespace belirtilir.
2-) Tüm yapıların listelenmesi
kubectl get all
3-) Cluster hakkında temel bilgi alma
kubectl cluster-info
4-) cat komutu ile çoklu component oluşturma
apiVersion: v1
kind: Pod
metadata:
name: nightw
spec:
containers:
- name: nightw
image: oraclelinux
args:
- sleep
- "1000"
---
apiVersion: v1
kind: Pod
metadata:
name: ubuntu
spec:
containers:
- name: ubuntu
image: ubuntu
args:
- sleep
- "1700"
EOF
5-) Çoklu component silme
kubectl delete pod,svc mypod mysrv
6-) PersistentVolume'ların boyuta göre listelenmesi
kubectl get pv --sort-by=.spec.capacity.storage
7-) Ölçeklendirmenin güncellenmesi
kubectl scale --replicas=X component_tipi/component_adı
Resimdeki örnekte 1 replica olarak çalışan deployment 3 replica şeklinde güncellenmiştir.
8-) Container log'larını görüntüleme
kubectl logs pod_adı -c container_adı
9-) Mevcut Pod'a label ekleme
kubectl label pod pod_adı mein=kampf
10-) Bash için otomatik komut tanımlamanın ayarlanması
source <(kubectl completion bash
Not: Komutun çalışması için bash-completion paketinin yüklü olması gerekmektedir.
İşlemin kalıcı olması adına .bashrc dosyasına yazmak için:
echo "source <(kubectl completion bash)" >> ~/.bashrc
11-) Aynı anda birden çok kubeconfig dosyasının kullanılması
config ve config2 isimli dosyalarımız olduğunu varsayalım.
export KUBECONFIG=~/.kube/config:~/.kube/config2