K8s的所有操作基本都是透過呼叫kube-apiserver這個元件進行的,可以透過kubectl命令列工具或者程式設計API來,同時也REST API供外部系統遠端訪問。本文將介紹這幾種方式來訪問或操作K8S資源物件。

Kubectl命令列

kubectl作為客戶端CLI工具,可以讓使用者透過命令列的方式對Kubernetes叢集進行操作。

kubectl命令格式

kubectl命令格式為

kubectl [command] [TYPE] [NAME] [flags]

command子命令用於表示要對K8S叢集中資源物件進行的操作,常見command命令有create、delete、describe、get、apply等;

TYPE表示command命令要操作的資源物件,如pod、service、job等,並且支援單複數與簡寫,如pod、pods與po等價,都可以用於表示pod物件,kubectl可以操作的所有K8S資源物件及其縮寫如下

容器技術(七):K8S實戰(絕對良心)

NAME表示資源物件的名稱。如果不指定名稱,則系統將command操作施加在該TYPE的所有物件上,例如kubectl get pods將返回所有的Pod的資訊;

flags:command命令的可選引數,例如使用“-f”指定yaml配置檔案進行建立或刪除操作。

一個kubectl命令可以同是最多個資源物件進行操作,多透過個TYPE和NAME的組合表示來表示多個物件,例如 * 獲取多個同TYPE不同NAME的物件

kubectl get pods pod1 pod2

獲取多個不同TYPE的物件

kubectl get pod/pod1 rc/rc1

同時應用多個yaml檔案,操作資源物件

kubectl get pod -f pod1。yaml -f pod2。yaml

kubectl create -f pod1。yaml -f rc1。yaml -f service1。yaml

kubectl命令輸出格式

kubectl 命令可以透過-o引數指定命令執行結果的輸出的格式

kubectl [command] [TYPE] [NAME] -o=

常見可選輸出格式如下

-o=custom-columns= 根據自定義列名進行輸出,以逗號分隔

-o=custom-colimns-file=\ 從檔案中獲取自定義列名進行輸出

-o=json 以JSON格式顯示結果

-o=jsonpath=