kubernetes-kubectl

簡介: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>

 

發佈了105 篇原創文章 · 獲贊 169 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章