簡介:kubectl 作爲客戶端CLI工具,可以讓用戶通過命令行的方式對Kubernetes集羣進行操作,
1.1 kubectl 用法
kubectl命令行語法:
kubectl [command] [TYPE] [NAME] [flags]
其中,command,TYPE,NAME,flags含義如下。
(1)command: 子命令,用於操作kubernetes集羣資源對象的命令,如create,delete,describe,get,apply等
(2)TYPE:資源對象的類型,區分大小寫,能以單數形式,複數形式或簡寫形式表示,
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
(3) NAME:資源對象的名稱,區分大小寫。如果不指定名稱,則系統將返回屬於TYPE的全部對象的列表,如:kubectl get pods 將返回所有pod的列表
(4) flags:kubectl子命令的可選參數,例如使用" -s "指定apiserver的URL地址不用默認值
kubectl 可操作的資源對象如下
在一個命令行中也可以同時對多個資源對象進行操作,以多個TYPE和NAME的組合表示
獲取多個pod的信息
kubectl get pods pod1 pod2
獲取多種對象的信息:
kubectl get pod/pod1 rc/rc1
同時應用多個yaml文件,以多個-f file 參數表示
kubectl get pod -f pod1.yaml -f pod2.yaml
kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
1.2 kubectl 子命令
kubectl的子命令非常豐富,涵蓋了對kubernetes集羣的主要操作,包括資源對象的創建,刪除,查看,修改,配置,運行等
1.3 kubectl 參數列表
kubectl 命令行的公共啓動參數
每個子命令(如create,delete,get等)還有特定的flags參數,可以通過$kubectl [command] --help命令進行查看
1.4 kubectl 輸出格式
kubectl 命令可以使用多種格式對結果進行顯示,輸出的格式通過-o參數指定
kubectl [command] [TYPE] [NAME] -o=<output_format>
常用的輸出格式示例如下。
(1)顯示Pod的更多信息:
kubectl get pod <pod-name> -o wide
(2)以yaml格式顯示pod的詳細信息:
kubectl get pod <pod-name> -o yaml
(3) 以自定義列名顯示pod的信息
kubectl get pod <pod-name> -o=custom-columns=NAME:.metadata.name.RSRC:.metadata.resourceVersion
(4) 基於文件的自定義列名輸出
kubectl get pods <pod-name> -o=custom-columns-file=template.txt
template.txt 文件內容爲:
NAME RSRC
metadata.name metadata.resourceVersion
輸出結果爲:
NAME RSRC
pod-name 52305
另外,還可以將輸出結果按某個字段排序,通過--sort-by參數以jsonpath表達式進行指定:
kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
例如,按照名字進行排序:
kubectl get pods --sort-by=.metadata.name
1.5 kubectl 操作示例
(1)創造資源對象
根據yaml配置文件一次性創建service和rc
kubectl create -f my-service.yaml -f my-rc.yaml
根據<directory>目錄下所有.yaml,.yml,.json文件
kubectl get rc.service
(2) 創建資源對象
查看所有pod列表
kubectl get pods
查看rc和service列表:
kubectl get rc,service
(3) 描述資源對象
顯示Node的詳細信息:
kubectl describe nodes <node-name>
顯示pod的詳細信息:
kubectl describe pods/<pod-name>
顯示由RC管理的Pod的信息:
kubectl describe pods <rc-name>
(4) 刪除資源對象
基於pod.yaml 定義的名稱刪除pod:
kubectl delete -f pod.yaml
刪除所有包含某個label的pod和service
kubectl delete pods,service -1 name=<label-name>
刪除所有pod:
kubectl delete pods --all
(5) 執行容器命令
執行pod的date命令,默認使用Pod中的第1個容器執行:
kubectl exec <pod-name> date
指定pod中某個容器執行date命令
kubectl exec <pod-name> -c <container-name> date
通過bash獲得pod中某個容器的TTY,相當於登錄容器
kubectl exec -it <pod-name> -c <container-name> /bin/bash
(6)查看容器日誌
查看容器輸出到stdout的日誌
kubectl logs <pod-name>
跟蹤查看容器的日誌,相當於tail -f 命令的結果
kubectl logs -f <pod-name> -c <container-name>