常見的 kubectl 指令
Last updated
Last updated
K8s 所有資源都是 RESTful API 格式組成的,每個資源皆稱呼為物件 object。
每個物件都有唯一的 http 路徑,例如:
一個 pod 名稱是:my-pod 。
此 pod 物件位於 namespace:default 空間中。
要取得特定資源,kubectl 指令方式是 kubectl get <資源名稱> <物件名稱>
預設下,kubectl get
僅輸出簡單明瞭之單行資訊
如要檢視稍多資訊,可透過 -o wide
旗標,在該行中取得稍多資訊。
如要檢視完整資訊,可透過 kubectl get pods my-pod -o json | -o yaml
取得。
如要檢視完整資訊,另一方式指令 kubectl describe <資源名稱> <物件名稱>
。
如要移除首行資訊,可搭配使用 --no-headers
旗標。
如要只提取特定欄位,可搭配使用 -o jsonpath --template={.status.podIP}
。
K8s API 物件都可用 JSON or YAML 格式檔案進行定義。
檔案可以是 apiserver 回應的查詢結果,也可傳送至 apiserver 執行一次請求。
建立物件指令:kubectl apply -f http.yaml
如果 http.yaml 物件重新修改過,可以重複執行上述指令。
也可線上編輯物件,但非常不建議這麼做,這牽涉到團隊協同合作情境。
線上編輯指令:kubectl edit <資源名稱> <物件名稱>
刪除物件指令:kubectl delete -f http.yaml
也可以是:kubectl delete <資源名稱> <物件名稱>
刪除指令只要一送出,該物件即刻刪除,K8s 系統並不會額外提醒刪除動作。
K8s 物件是可以透過 annotate、label 兩指令進行標注與註解。
新增標注方式:kubectl label pods my-pod color=green
移除標注方式:kubectl label pods my-pod -color
觀察標注?
查看 log 方式:kubectl log my-pod
如果一個 pod 中有多個 container,可以使用-c
另行指定 container。
上述指令執行,如同 Linuxtail
指令即刻跳出輸出,如要讓 log 不斷輸出,可以加上-f
命令。
想進入 container bash 環境進行除錯, 可以執行指令:kubectl exec -it my-pod --bash
想複製 pod container 中的檔案,可以執行指令 kubectl cp <pod-name>:/path/abc.txt ~/abc.txt
反過來也可複製到 container 中:kubectl cp ~/xyz.txt <pod-name>:/path/xyz.txt