前言
本篇是Kubernetes第三篇,大家一定要把環境搭建起來,看是解決不了問題的,必須實戰。本篇重要介紹kubectl的使用。
Kubernetes系列文章:
kubectl的核心功能在於通過 API Server 操作 Kubernetes 的各種資源物件,包括資源物件的建立、刪除、檢視、修改、配置、執行等等,學習kubectl相關命令是瞭解 Kubernetes 叢集管理的一種手段。
kubectl語法
kubectl [command] [TYPE] [NAME] [flags]
command:指定在一個或多個資源上要執行的操作。例如:create、get、describe、delete、apply; TYPE:指定資源型別。資源型別區分大小寫,您可以指定單數,複數或縮寫形式; Name: 指定資源的名稱。名稱區分大小寫。如果省略名稱,則會顯示所有資源的詳細資訊;
#獲取相同型別的資源資訊 type name1 name2
kubectl get pod example-pod1 example-pod2
#獲取不同型別物件資源 type/name type2/name2
kubectl get pod/example1 replicationcontroller/example2
#同時應用多個YAML檔案,以多個-f flie引數表示
kubectl get pod -f pod1.yaml -f pod2.yaml
指定可選的標記。例如,可以使用 -s 或 --server標識來指定Kubernetes API伺服器的地址和埠;-n指定名稱空間;
輸出格式
kubectl命令可以對結果進行多種格式化顯示,輸出的格式通過-o引數指定:
kubectl [command] [TYPE] [NAME] -o <output_format>
常用的輸出格式如下:

自定義列名展示;
kubectl get pod
#value就是pod定義欄位
kubectl get pods -o custom-columns=NAME:.metadata.name,UID:.metadata.uid,imageName:.spec.containers[0].image

自定義列名配置檔名稱;
#自定義需要展示列名檔案
vim custom-col.conf
#輸入下面內容
NAME UID imageName containerPort
metadata.name metadata.uid spec.containers[0].image spec.containers[0].ports[0].containerPort
#指定檔案輸出
kubectl get pod -o custom-columns-file=custom-col.conf

json格式輸出;
kubectl get pod -o json

輸出jsonpath檔案內容;
kubectl get pods -o jsonpath='{.items[0].metadata.name},{.items[0].spec.containers[0].image}'

通過自定義jsonpath檔案輸出自定義內容;
#自定義JSONPath檔案
vim custom-json.conf
#輸入自定義的內容
{.items[0].metadata.name},{.items[0].spec.containers[0].image},{.items[0].spec.containers[0].ports[0].containerPort}
#按照格式輸出
kubectl get pod -o jsonpath-file=custom-json.conf
僅列印資源物件的名稱;
kubectl get pod -o name

展示更多的Pod資訊;
kubectl get pod -o wide

以yaml的格式顯示結果;
kubectl get pod -o yaml

關於kubectl的命令很多,大家可以參考下官方文件,這裡就不詳細介紹每個命令,大家只要掌握常用的命令即可,下面的篇幅就是介紹大家常用命令;
kubectl常用命令
kubectl create/replace 和 kubectl apply 部署或者替換資源,kubectl replace的執行過程,是使用新的 YAML檔案中的 API 物件,替換原有的 API 物件,kubectl apply,則是執行了一個對原有 API 物件的patch 操作,這裡建議大家使用kubectl apply操作;
#使用create建立一個Deployment資源物件 使用上個章節的yaml檔案
kubectl create -f nginx-deployment.yaml
#修改命令 可以通過kubectl edit 還可以使用修改nginx-deployment.yaml檔案,
#後使用 kubectl replace 來觸發更新 我們修改限制記憶體的為256,這種方式我們稱為命令式配置檔案操作
kubectl replace -f nginx-deployment.yaml
#我們也可以使用kubectl apply建立物件資源
kubectl apply -f nginx-deployment.yaml
#然後通過修改nginx-deployment.yaml檔案,執行kubectl apply就可以完成資源修改
kubectl apply -f nginx-deployment.yaml
kubectl get 列出檢視同一種類型一個或者多個資源物件;
#列出所有的pod
kubectl get pods
#列出某個節點上的所有的pod
kubectl get pods --field-selector=spec.nodeName=節點的名稱
#篩選標籤為testing=true的pod
kubectl get pod -l testing=true
kubectl describe 檢視資源的詳細資訊,kubectl describe相比於kubectl get來說,更多關注資源方面的詳情,會返回節點資訊、節點時間等等,kubectl get 使用者檢視同一種類型一個或者多個資源物件;
#檢視某個pod詳細資訊
kubectl describe pod/nginx-deployment-776b4d7488-jfcjq
#檢視某個node詳細資訊
kubectl describe nodes/demo-work-1
kubectl delete 刪除輸入的指定的資源物件,也可以通過標籤選擇器、名稱、資源選擇器來刪除特定資源範圍;
#刪除指定型別的pod
kubectl delete -f pod.yaml
#刪除所有label-key:label-value的資訊
kubectl delete pods -l label-key=label-value
kubectl exec 在pod的容器中執行命令;
#進入/bin/bash互動介面
kubectl exec -it nginx-deployment-776b4d7488-jfcjq -- /bin/bash
kubectl logs 列印Pod中容器的日誌;
#列印日誌
kubectl logs nginx-deployment-776b4d7488-jfcjq
#持續監控pod日誌
kubectl logs -f nginx-deployment-776b4d7488-jfcjq
kubectl edit 線上編輯資源物件;
#線上編輯deployment資源
kubectl edit deploy nginx-deployment
將Pod埠對映到宿主機埠;
#將Pod 80埠對映到宿主機 8888
kubectl port-forward --address 172.21.122.230,localhost pod/nginx-deployment-776b4d7488-jfcjq 8888:80
#開啟另外一個介面訪問
curl http://172.21.122.230:8888
容器與宿主機之間複製檔案;
kubectl cp nginx-deployment-776b4d7488-jfcjq:/etc/fastab /tmp
設定資源物件標籤;
#給pod設定testing=true的標籤
kubectl label pod nginx-deployment-776b4d7488-jfcjq testing=true
#篩選標籤為testing=true的pod
kubectl get pod -l testing=true
最重要的命令,幫助命令;
#列出command的型別
kubectl
#列出某種command的使用文件
kubectl command --help
結束
歡迎大家點點關注,點點贊!