1. 程式人生 > 其它 >Kubernetes之kubectl應用解析

Kubernetes之kubectl應用解析

kubectl的核心功能在於通過 API Server 操作 Kubernetes 的各種資源物件,包括資源物件的建立、刪除、檢視、修改、配置、執行等等,學習kubectl相關命令是瞭解 Kubernetes 叢集管理的一種手段。

kubectl語法

kubectl[command][TYPE][NAME][flags]
  1. command:指定在一個或多個資源上要執行的操作。例如:create、get、describe、delete、apply;
  2. TYPE:指定資源型別。資源型別區分大小寫,您可以指定單數,複數或縮寫形式;
  3. Name: 指定資源的名稱。名稱區分大小寫。如果省略名稱,則會顯示所有資源的詳細資訊;
#獲取相同型別的資源資訊typename1name2
kubectlgetpodexample-pod1example-pod2
#獲取不同型別物件資源type/nametype2/name2
kubectlgetpod/example1replicationcontroller/example2
#同時應用多個YAML檔案,以多個-fflie引數表示
kubectlgetpod-fpod1.yaml-fpod2.yaml
  1. 指定可選的標記。例如,可以使用 -s 或 --server標識來指定Kubernetes API伺服器的地址和埠;-n指定名稱空間;
輸出格式

kubectl命令可以對結果進行多種格式化顯示,輸出的格式通過-o引數指定:

kubectl[command][TYPE][NAME]-o<output_format>

常用的輸出格式如下:

  1. 自定義列名展示;
kubectlgetpod
#value就是pod定義欄位
kubectlgetpods-ocustom-columns=NAME:.metadata.name,UID:.metadata.uid,imageName:.spec.containers[0].image
  1. 自定義列名配置檔名稱;
#自定義需要展示列名檔案
vimcustom-col.conf
#輸入下面內容
NAMEUIDimageNamecontainerPort
metadata.namemetadata.uidspec.containers[0].imagespec.containers[0].ports[0].containerPort
#指定檔案輸出
kubectlgetpod-ocustom-columns-file=custom-col.conf
  1. json格式輸出;
kubectlgetpod-ojson
  1. 輸出jsonpath檔案內容;
kubectlgetpods-ojsonpath='{.items[0].metadata.name},{.items[0].spec.containers[0].image}'
  1. 通過自定義jsonpath檔案輸出自定義內容;
#自定義JSONPath檔案
vimcustom-json.conf
#輸入自定義的內容
{.items[0].metadata.name},{.items[0].spec.containers[0].image},{.items[0].spec.containers[0].ports[0].containerPort}
#按照格式輸出
kubectlgetpod-ojsonpath-file=custom-json.conf
  1. 僅列印資源物件的名稱;
kubectlgetpod-oname
  1. 展示更多的Pod資訊;
kubectlgetpod-owide
  1. 以yaml的格式顯示結果;
kubectlgetpod-oyaml

關於kubectl的命令很多,大家可以參考下官方文件,這裡就不詳細介紹每個命令,大家只要掌握常用的命令即可,下面的篇幅就是介紹大家常用命令;

kubectl常用命令

  1. kubectl create/replace 和 kubectl apply 部署或者替換資源,kubectl replace的執行過程,是使用新的 YAML檔案中的 API 物件,替換原有的 API 物件,kubectl apply,則是執行了一個對原有 API 物件的patch 操作,這裡建議大家使用kubectl apply操作;
#使用create建立一個Deployment資源物件使用上個章節的yaml檔案
kubectlcreate-fnginx-deployment.yaml
#修改命令可以通過kubectledit還可以使用修改nginx-deployment.yaml檔案,
#後使用kubectlreplace來觸發更新我們修改限制記憶體的為256,這種方式我們稱為命令式配置檔案操作
kubectlreplace-fnginx-deployment.yaml
#我們也可以使用kubectlapply建立物件資源
kubectlapply-fnginx-deployment.yaml
#然後通過修改nginx-deployment.yaml檔案,執行kubectlapply就可以完成資源修改
kubectlapply-fnginx-deployment.yaml
  1. kubectl get 列出檢視同一種類型一個或者多個資源物件;
#列出所有的pod
kubectlgetpods
#列出某個節點上的所有的pod
kubectlgetpods--field-selector=spec.nodeName=節點的名稱
#篩選標籤為testing=true的pod
kubectlgetpod-ltesting=true
  1. kubectl describe 檢視資源的詳細資訊,kubectl describe相比於kubectl get來說,更多關注資源方面的詳情,會返回節點資訊、節點時間等等,kubectl get 使用者檢視同一種類型一個或者多個資源物件;
#檢視某個pod詳細資訊
kubectldescribepod/nginx-deployment-776b4d7488-jfcjq
#檢視某個node詳細資訊
kubectldescribenodes/demo-work-1
  1. kubectl delete 刪除輸入的指定的資源物件,也可以通過標籤選擇器、名稱、資源選擇器來刪除特定資源範圍;
#刪除指定型別的pod
kubectldelete-fpod.yaml
#刪除所有label-key:label-value的資訊
kubectldeletepods-llabel-key=label-value
  1. kubectl exec 在pod的容器中執行命令;
#進入/bin/bash互動介面
kubectlexec-itnginx-deployment-776b4d7488-jfcjq--/bin/bash
  1. kubectl logs 列印Pod中容器的日誌;
#列印日誌
kubectllogsnginx-deployment-776b4d7488-jfcjq
#持續監控pod日誌
kubectllogs-fnginx-deployment-776b4d7488-jfcjq
  1. kubectl edit 線上編輯資源物件;
#線上編輯deployment資源
kubectleditdeploynginx-deployment
  1. 將Pod埠對映到宿主機埠;
#將Pod80埠對映到宿主機8888
kubectlport-forward--address172.21.122.230,localhostpod/nginx-deployment-776b4d7488-jfcjq8888:80
#開啟另外一個介面訪問
curlhttp://172.21.122.230:8888
  1. 容器與宿主機之間複製檔案;
kubectlcpnginx-deployment-776b4d7488-jfcjq:/etc/fastab/tmp
  1. 設定資源物件標籤;
#給pod設定testing=true的標籤
kubectllabelpodnginx-deployment-776b4d7488-jfcjqtesting=true
#篩選標籤為testing=true的pod
kubectlgetpod-ltesting=true
  1. 最重要的命令,幫助命令;
#列出command的型別
kubectl
#列出某種command的使用文件
kubectlcommand--help