前言
本篇是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
結束
歡迎大家點點關注,點點贊!