裝好K8S後,可以使用kubectl進行K8S CLUSTER的操作
開啟TERNIAML,輸入以下指令
kubectl command type name flags
command指要什麼資源作什麼「動作」,有下列command指令
資源的類型,EX
kubectl get pod
這邊有很詳細的類型別 资源类型
比較常用的不外是
kubectl get pod
kubectl get pods
kubectl get nodes
kubectl get servies
kubectl get namespaces
name就資源名稱,ex pod name,node name,如果要查看複數的資源時,加個空白就可以ex
kubectl get pod coredns-558bd4d5db-8pz59 coredns-558bd4d5db-ldx8g -n kube-system
執行結果
NAME READY STATUS RESTARTS AGE
coredns-558bd4d5db-8pz59 1/1 Running 1 20h
coredns-558bd4d5db-ldx8g 1/1 Running 1 20h
flag是option,目前常用的flag就是 -n ,指定namespace,如果沒加-n namespace就是default
kubectl get pods
No resources found in default namespace.
最最最重要的指令
kubectl config current-context
不管要什麼異動k8s的動作前,一定要先下kubectl config current-context,確認目前cluster是不是要操作的對象,下面是比較常常會使用到的語法(來源:kubectl cli)
current-context 顯示目前的 context
delete-cluster 刪除 kubeconfig 檔案中指定的叢集(cluster)
delete-context 刪除 kubeconfig 檔案中指定的 context
get-clusters 顯示 kubeconfig 檔案中定義的叢集(cluster)
get-contexts 描述一個或多個 context
use-context 設置 kubeconfig 檔案中的目前 context
看log是碼農的日常
查詢pod snapshot
的log資料
kubectl logs kube-proxy-plnjz -n kube-system
查詢pod streaming
的log資料
kubectl logs -f -p kube-proxy-plnjz -n kube-system
二都差在-f
的log資料會一直顯示出來,如果需要一直觀察log記錄的情形下,記得加上-f
查詢最近n筆資料
kubectl logs --tail=20 -p kube-proxy-plnjz -n kube-system
指令kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...] [options]
對pod執行指令,像是要進到redis pod裡面下redis-cli之類時可以用到
kubectl exec -ti test-redis -- /bin/bash
apply可以針對cluster進行建立/更新資源,反之delete是進行刪除,因為後面會介紹helm
,所以apply就不再進行介紹,還有一個部份要注意,如果你apply上去的yaml檔有異動裡面的內容,這樣子進行delete會發生錯誤喔,要記得delete要跟apply同一份yaml
kubectl apply -f test.yaml
kubectl delete -f test.yaml
這個指令對於K8s使用者們來說,除了查log外,portforward應該是船長們的日常,
portforward這功能簡單來說,就是把你電腦跟k8s透過http port進行相連,如下圖
前面port是本機,後面是pod的port,別搞錯喔~~
kubectl port-forward nginx-43d51d22a1-3aa1q 8787:80
這樣子在本機打127.0.0.1:8787會轉到nginx
以上大概是個人很常用的指令,還有一些特殊需求時才會下的就不特別提出來講了,因為太多啦