Kubernetes Komutları, Kubectl, Kubernetes cluster ortamında komutları çalıştırmanıza izin veren bir komut satırı arabirimidir. Cluster üzerinde çeşitli işlemleri bu şekilde gerçekleştirebileceğiz.
Kubectl bir kubeconfig’e(/etc/kubernetes/admin.conf) bağlıdır. Bu, bir veya daha fazla clustera erişim için bir yapılandırma dosyasıdır, kubectl komutunun sintaksisi aşağıdaki gibidir;
1
|
kubectl [command] [TYPE] [ NAME ] [flags] |
- command : Bir veya daha fazla kaynak üzerinde gerçekleştirmek istediğiniz işlemi belirtir; örneğin create, get, describe, delete,logs ,exec, apply
- TYPE : Kaynak türünü belirtir. Kaynak türleri büyük / küçük harfe duyarlı değildir ve tekil, çoğul veya kısaltılmış formları belirtebilirsiniz. En sık kullanılan kaynak türleri
1
2
3
|
kubectl get pod pod1 kubectl get pods pod1 kubectl get po pod1 |
En sık kullanılan kaynak türleri aşağıdaki gibidir.
-
- pods, po
- nodes, no
- deployments, deploy
- replicasets, rs
- daemonsets, ds
- statefulsets, sts
- jobs
- cronjobs, cj
- services, svc
- persistentvolumes, pv
- persistentvolumeclaims, pvc
- all
- events
Burada iki tane kaynak türü çok sık kullanıldığı için onları ayrı olarak belirtmek istedim, bunlar all ve events kaynak türleridir, all tüm mevcut kaynaklara atıfta bulunmak için kullanılır, event ise container bazında değil ama kubernetes düzeyinde logları veriyor.
- NAME : Kaynağın adını belirtir. İsimler büyük / küçük harfe duyarlıdır. Kaynağın adı belirtililmesse aynı namespace’deki bütün kaynaklar görüntülenir.
1
2
3
4
|
kubectl get pods kubectl get pod example-pod1 example-pod2 kubectl get pod/example-pod1 replicationcontroller/example-rc1 kubectl get pod -f ./pod.yaml |
- flags : İsteğe bağlı flagları belirtir. Örneğin, Kubernetes API sunucusunun adresini ve bağlantı noktasını belirtmek için -s veya –server bayraklarını kullanabilirsiniz.
NOT : kubectl komutunu devamlı devamlı yazmak yerine isterske bash de bir alias tanımlayıp bu kısmı kısaltabiliriz.
1
|
alias k= 'kubectl' |
Bu yukarıda yazdığım genel yazının detaylarına referanslar kısmında belirttiğim kubernetesin kendi dökümantasyonlarından ulaşabilirsiniz. Benim bu yazıdaki amacım çok kullanılan komutların derli toplu el altında bulunması;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
--Cluster bilgisini görüntüler kubectl cluster-info --Kaynakları hakkında clusterdaki verileri alır. kubectl get [(-o| --output=)json|yaml|wide|custom-columns=...|custom-columnsfile=...| go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags] kubectl get all kubectl get pods kubectl get pods --all_namespaces kubectl get pods --all_namespaces -o wide kubectl get pods -l run=my-nginx -o wide kubectl get pods -l run=my-nginx -o yaml kubectl get deployment deneme1 -o yaml # Çalışan deploy özelliklerini yaml formatında döker kubectl get svc kubectl get svc nginx kubectl get ep nginx kubectl get nodes kubectl get nodes -o wide kubectl get events kubectl get events --namespace=default kubectl get deployment kubectl get pvc --all-namespaces #Volumes Claims: kubectl get pv --all-namespaces kubectl get secrets kubectl get configmap kubectl get ingress kubectl get daemonsets kubectl get --raw=/apis kubectl get --raw=/logs/kube-apiserver.log --Pod içindeki konteynerların logunu almak için kullanılır. kubectl logs [-f] [-p] POD [-c CONTAINER] kubectl logs kubectl logs nginx kubectl logs nginx --all-containers=true kubectl logs –p –c nginx kubectl logs -f -c ruby web-1 kubectl logs --tail=20 nginx kubectl logs --since=1h nginx kubectl logs job/hello --Bir kaynağı dosya veya stdin ile yapılandırabilme özelliğine sahiptir. kubectl apply –f <filename> --Kaynak oluşturmak için kullanılır.Bunu yapmak için JSON veya YAML formatları kabul edilir. kubectl create –f <File Name > cat <file name > | kubectl create –f - --Kaynak silmek için kullanılır kubectl delete –f ([-f FILENAME] | TYPE [( NAME | -l label | --all)]) kubectl service/my-service kubectl service my-service1 -n default --Kubernetesde belirli bir kaynağı tanımlar. Kaynağın veya bir kaynak grubunun ayrıntılarını gösterir. kubectl describe <type> <type name > kubectl describe pod tomcat --Konteyner bash prompta gitmek istersek veya herhangi bir komut çalıştırmak istersek kullanırız kubectl exec POD <-c CONTAINER > -- COMMAND < args...> kubectl exec tomcat 123-5-456 date kubectl exec -it shell-demo -- /bin/bash --Deployment, service, replica set, replication controller veya pod'a service oluşturmak için kullanılan komut. kubectl expose (-f FILENAME | TYPE NAME ) [ --port=port] [--protocol = TCP|UDP] [ --target-port = number-or-name] [--name = name] [--external-ip = external-ip-ofservice] [ --type = type] kubectl expose rc nginx --port=80 --target-port=8000 kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000 kubectl expose pod valid-pod --port=444 --name=frontend kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https kubectl expose rc streamer --port=4100 --protocol=UDP --name=video-stream --Kubernetes deployment, ReplicaSet, Replication Controller'ın veya job'u ölçeklendirmek için kullanılır. kubectl scale [ --resource-version = version] [--current-replicas = count] --replicas = COUNT (-f FILENAME | TYPE NAME ) kubectl scale --replicas=3 rs/foo kubectl scale --replicas=3 -f foo.yaml kubectl scale --current-replicas=2 --replicas=3 deployment/mysql --Kaynağın limitlerini ayarlamak için kullanılır. kubectl set resources (-f FILENAME | TYPE NAME ) ([ --limits = LIMITS & --requests = REQUESTS] kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0 #Silmek için kubectl set resources -f path/ to /file.yaml --limits=cpu=200m,memory=512Mi --local -o yaml --Top komutu nodeların kaynak tüketimini görmenizi sağlar.CPU/Memory/Storage kullanımını gösterir. kubectl top node kubectl top node NODE_NAME kubectl top pod kubectl top pod --namespace=NAMESPACE kubectl top pod POD_NAME --containers kubectl top pod -l name =myLabel --Deployment, replica set, Replication Controller gibi tanımlanan podları otomatik olarak ölçeklemek için kullanılır. kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/ NAME ) [ --min = MINPODS] --max = MAXPODS [--cpu-percent = CPU] [flags] kubectl autoscale deployment foo --min = 2 --max = 10 --Konteynarlara dizinlerden dosya ve dizin kopyalama kubectl cp <Files from source> <Files to Destinatiion> kubectl cp /tmp/foo < some -pod>:/tmp/bar -c <specific-container> --Cluster da image çalıştırır. kubectl run NAME --image = image [--env = "key = value"] [--port = port] [--replicas = replicas] [--dry-run = bool] [--overrides = inline-json] [--command] --[COMMAND] [args...] kubectl run tomcat --image = tomcat:7.0 kubectl run tomcat –-image = tomcat:7.0 –port = 5000 --Cluster sorunlarını ayıklamak ve tanılamak için uygun küme bilgilerini dump dosyasını çıkartır. Varsayılan olarak, her şeyi stdout'a döker. kubectl cluster-info dump kubectl cluster-info dump --output-directory=/home/kubernetes/test --Bakım amacıyla bir nodu boşaltmak için kullanılır. Nodu bakım için hazırlar. Oluşturulacak yeni bir konteynerın atanmaması için nodu kullanılamaz olarak işaretler. kubectl drain tomcat – force --Çalışan konteynere bir şeyler ekler/iliştirir. kubectl attach <pod> –c <container> kubectl attach 123456-7890 -c tomcat-conatiner --Clusterın desteklediği API versiyonu yazdırır kubectl api-versions --Kubeconfig içinde tanımlı kümeyi görüntüler. kubectl config get-cluster kubectl config get-cluster <Cluser Name > --Kubeconfig dosyasını değiştirir. kubectl config <SUBCOMMAD> kubectl config –-kubeconfig <String of File name > --Kubeconfig içinde bir kullanıcı girişi ayarlar. kubectl config set -credentials cluster-admin --username = vipin --password = u |