Kubernetes-kubectl介紹


前言

本篇是Kubernetes第三篇,大家一定要把環境搭建起來,看是解決不了問題的,必須實戰。本篇重要介紹kubectl的使用。

Kubernetes系列文章:
  1. Kubernetes介紹
  2. Kubernetes環境搭建

kubectl的核心功能在於通過 API Server 操作 Kubernetes 的各種資源對象,包括資源對象的創建、刪除、查看、修改、配置、運行等等,學習kubectl相關命令是了解 Kubernetes 集群管理的一種手段。

kubectl語法

kubectl [command] [TYPE] [NAME] [flags]
  1. command:指定在一個或多個資源上要執行的操作。例如:create、get、describe、delete、apply;
  2. TYPE:指定資源類型。資源類型區分大小寫,您可以指定單數,復數或縮寫形式;
  3. 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
  1. 指定可選的標記。例如,可以使用 -s 或 --server標識來指定Kubernetes API服務器的地址和端口;-n指定名稱空間;
輸出格式

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

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

常用的輸出格式如下:

img
img
  1. 自定義列名展示;
kubectl get pod
#value就是pod定義字段
kubectl get pods -o custom-columns=NAME:.metadata.name,UID:.metadata.uid,imageName:.spec.containers[0].image
image.png
image.png
  1. 自定義列名配置文件名稱;
#自定義需要展示列名文件
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
image.png
image.png
  1. json格式輸出;
kubectl get pod -o json
image.png
image.png
  1. 輸出jsonpath文件內容;
kubectl get pods -o jsonpath='{.items[0].metadata.name},{.items[0].spec.containers[0].image}'
image.png
image.png
  1. 通過自定義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
  1. 僅打印資源對象的名稱;
kubectl get pod -o name
image.png
image.png
  1. 展示更多的Pod信息;
kubectl get pod -o wide
image.png
image.png
  1. 以yaml的格式顯示結果;
kubectl get pod -o yaml
image.png
image.png

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

kubectl常用命令

  1. 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
  1. kubectl get 列出查看同一種類型一個或者多個資源對象;
#列出所有的pod
kubectl get pods
#列出某個節點上的所有的pod
kubectl get pods --field-selector=spec.nodeName=節點的名稱
#篩選標簽為testing=true的pod
kubectl get pod -l testing=true
  1. kubectl describe 查看資源的詳細信息,kubectl describe相比於kubectl get來說,更多關注資源方面的詳情,會返回節點信息、節點時間等等,kubectl get 用戶查看同一種類型一個或者多個資源對象;
#查看某個pod詳細信息
kubectl describe pod/nginx-deployment-776b4d7488-jfcjq
#查看某個node詳細信息
kubectl describe nodes/demo-work-1
  1. kubectl delete 刪除輸入的指定的資源對象,也可以通過標簽選擇器、名稱、資源選擇器來刪除特定資源范圍;
#刪除指定類型的pod
kubectl delete -f pod.yaml
#刪除所有label-key:label-value的信息
kubectl delete pods -l label-key=label-value
  1. kubectl exec 在pod的容器中運行命令;
#進入/bin/bash交互界面
kubectl exec -it nginx-deployment-776b4d7488-jfcjq -- /bin/bash
  1. kubectl logs 打印Pod中容器的日志;
#打印日志
kubectl logs nginx-deployment-776b4d7488-jfcjq
#持續監控pod日志
kubectl logs -f nginx-deployment-776b4d7488-jfcjq
  1. kubectl edit 在線編輯資源對象;
#在線編輯deployment資源
kubectl edit deploy nginx-deployment
  1. 將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
  1. 容器與宿主機之間復制文件;
kubectl cp nginx-deployment-776b4d7488-jfcjq:/etc/fastab  /tmp
  1. 設置資源對象標簽;
#給pod設置testing=true的標簽 
kubectl label pod nginx-deployment-776b4d7488-jfcjq testing=true
#篩選標簽為testing=true的pod
kubectl get pod -l testing=true
  1. 最重要的命令,幫助命令;
#列出command的類型
kubectl
#列出某種command的使用文檔
kubectl command --help

結束

歡迎大家點點關注,點點贊!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM