使用命令式命令管理 Kubernetes 物件
Kubernetes 物件可以使用內置於 kubectl
命令列工具的命令式命令快速建立、更新和刪除。本文件解釋了這些命令的組織方式以及如何使用它們來管理即時物件。
準備工作
安裝 kubectl
。
你需要擁有一個 Kubernetes 叢集,並且 kubectl
命令列工具已配置為與你的叢集通訊。建議在至少有兩個不作為控制平面主機的節點組成的叢集上執行本教程。如果你還沒有叢集,可以使用 minikube 建立一個,或者使用這些 Kubernetes 演練場中的一個
要檢查版本,請輸入 kubectl version
。
權衡
kubectl
工具支援三種物件管理方式
- 命令式命令
- 命令式物件配置
- 宣告式物件配置
有關每種物件管理的優缺點討論,請參閱Kubernetes 物件管理。
如何建立物件
kubectl
工具支援動詞驅動的命令,用於建立一些最常見的物件型別。這些命令的命名方式使得不熟悉 Kubernetes 物件型別的使用者也能識別。
run
:建立一個新的 Pod 以執行容器。expose
:建立一個新的 Service 物件,以在 Pod 之間負載均衡流量。autoscale
:建立一個新的 Autoscaler 物件,以自動水平擴充套件控制器,例如 Deployment。
kubectl
工具還支援物件型別驅動的建立命令。這些命令支援更多物件型別,並且意圖更明確,但要求使用者知道他們打算建立的物件型別。
create <objecttype> [<subtype>] <instancename>
某些物件型別具有可以在 create
命令中指定的子型別。例如,Service 物件有多個子型別,包括 ClusterIP、LoadBalancer 和 NodePort。下面是一個建立子型別為 NodePort 的 Service 的示例
kubectl create service nodeport <myservicename>
在前面的示例中,create service nodeport
命令被稱為 create service
命令的子命令。
你可以使用 -h
標誌查詢子命令支援的引數和標誌
kubectl create service nodeport -h
如何更新物件
kubectl
命令支援動詞驅動的命令,用於執行一些常見的更新操作。這些命令的命名方式使得不熟悉 Kubernetes 物件的開發人員無需知道必須設定的特定欄位即可執行更新。
scale
:透過更新控制器的副本數量,水平擴充套件控制器以新增或移除 Pod。annotate
:向物件新增或移除註解。label
:向物件新增或移除標籤。
kubectl
命令還支援由物件某個方面驅動的更新命令。設定此方面可能會為不同的物件型別設定不同的欄位
set
<field>
:設定物件的某個方面。
注意
在 Kubernetes 1.5 版本中,並非每個動詞驅動的命令都有關聯的方面驅動的命令。kubectl
工具支援這些額外的方法來直接更新即時物件,但這需要對 Kubernetes 物件模式有更好的理解。
edit
:透過在編輯器中開啟即時物件的原始配置來直接編輯它。patch
:使用補丁字串直接修改即時物件的特定欄位。有關補丁字串的更多詳細資訊,請參閱 API 約定中的補丁部分。
如何刪除物件
你可以使用 delete
命令從叢集中刪除物件
delete <type>/<name>
注意
你可以將kubectl delete
用於命令式命令和命令式物件配置。區別在於傳遞給命令的引數。要將 kubectl delete
用作命令式命令,請將要刪除的物件作為引數傳遞。下面是一個傳遞名為 nginx 的 Deployment 物件的示例kubectl delete deployment/nginx
如何檢視物件
有幾個命令用於列印有關物件的資訊
get
:列印匹配物件的基本資訊。使用get -h
檢視選項列表。describe
:列印匹配物件的聚合詳細資訊。logs
:列印在 Pod 中執行的容器的標準輸出和標準錯誤。
使用 set
命令在建立前修改物件
有些物件欄位沒有可以在 create
命令中使用的標誌。在某些情況下,你可以結合使用 set
和 create
在物件建立之前為欄位指定值。這是透過將 create
命令的輸出管道傳輸到 set
命令,然後再次管道傳輸回 create
命令來完成的。下面是一個示例
kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client | kubectl set selector --local -f - 'environment=qa' -o yaml | kubectl create -f -
kubectl create service -o yaml --dry-run=client
命令建立 Service 的配置,但將其作為 YAML 列印到標準輸出,而不是傳送到 Kubernetes API 伺服器。kubectl set selector --local -f - -o yaml
命令從標準輸入讀取配置,並將更新後的配置作為 YAML 寫入標準輸出。kubectl create -f -
命令使用透過標準輸入提供的配置建立物件。
使用 --edit
在建立前修改物件
你可以使用 kubectl create --edit
在建立物件之前對其進行任意更改。下面是一個示例
kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client > /tmp/srv.yaml
kubectl create --edit -f /tmp/srv.yaml
kubectl create service
命令建立 Service 的配置並將其儲存到/tmp/srv.yaml
。kubectl create --edit
命令在建立物件之前開啟配置檔案進行編輯。