使用命令式命令管理 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>:設定物件的某個方面。

kubectl 工具支援這些額外的方法來直接更新即時物件,但這需要對 Kubernetes 物件模式有更好的理解。

  • edit:透過在編輯器中開啟即時物件的原始配置來直接編輯它。
  • patch:使用補丁字串直接修改即時物件的特定欄位。有關補丁字串的更多詳細資訊,請參閱 API 約定中的補丁部分。

如何刪除物件

你可以使用 delete 命令從叢集中刪除物件

  • delete <type>/<name>
kubectl delete deployment/nginx

如何檢視物件

有幾個命令用於列印有關物件的資訊

  • get:列印匹配物件的基本資訊。使用 get -h 檢視選項列表。
  • describe:列印匹配物件的聚合詳細資訊。
  • logs:列印在 Pod 中執行的容器的標準輸出和標準錯誤。

使用 set 命令在建立前修改物件

有些物件欄位沒有可以在 create 命令中使用的標誌。在某些情況下,你可以結合使用 setcreate 在物件建立之前為欄位指定值。這是透過將 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 -
  1. kubectl create service -o yaml --dry-run=client 命令建立 Service 的配置,但將其作為 YAML 列印到標準輸出,而不是傳送到 Kubernetes API 伺服器。
  2. kubectl set selector --local -f - -o yaml 命令從標準輸入讀取配置,並將更新後的配置作為 YAML 寫入標準輸出。
  3. 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
  1. kubectl create service 命令建立 Service 的配置並將其儲存到 /tmp/srv.yaml
  2. kubectl create --edit 命令在建立物件之前開啟配置檔案進行編輯。

下一步

上次修改時間:2022 年 5 月 19 日太平洋時間下午 5:00:更新了不同頁面中對文件正確標題的引用 (f559518520)