Kubernetes 使用指令式命令管理Kubernetes對象

2022-06-11 15:57 更新

使用指令式命令管理 Kubernetes 對象

使用構(gòu)建在 kubectl 命令行工具中的指令式命令可以直接快速創(chuàng)建、更新和刪除 Kubernetes 對象。本文檔解釋這些命令的組織方式以及如何使用它們來管理現(xiàn)時對象。

在開始之前

安裝kubectl。

你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:

要檢查版本,請輸入 ?kubectl version?。

權(quán)衡取舍 

?kubectl ?工具能夠支持三種對象管理方式:

  • 指令式命令
  • 指令式對象配置
  • 聲明式對象配置

如何創(chuàng)建對象 

?kubectl ?工具支持動詞驅(qū)動的命令,用來創(chuàng)建一些最常見的對象類別。 命令的名稱設計使得不熟悉 Kubernetes 對象類型的用戶也能做出判斷。

  • ?run?:創(chuàng)建一個新的 Pod 來運行一個容器。
  • ?expose?:創(chuàng)建一個新的 Service 對象為若干 Pod 提供流量負載均衡。
  • ?autoscale?:創(chuàng)建一個新的 Autoscaler 對象來自動對某控制器(如 Deployment) 執(zhí)行水平擴縮。

?kubectl ?命令也支持一些對象類型驅(qū)動的創(chuàng)建命令。 這些命令可以支持更多的對象類別,并且在其動機上體現(xiàn)得更為明顯,不過要求 用戶了解它們所要創(chuàng)建的對象的類別。

  • ?create <對象類別> [<子類別>] <實例名稱>?

某些對象類別擁有自己的子類別,可以在 ?create ?命令中設置。 例如,Service 對象有 ClusterIP、LoadBalancer 和 NodePort 三種子類別。 下面是一個創(chuàng)建 NodePort 子類別的 Service 的示例:

kubectl create service nodeport <服務名稱>

在前述示例中,?create service nodeport? 命令也稱作 ?create service? 命令的子命令。 可以使用 ?-h? 標志找到一個子命令所支持的參數(shù)和標志。

kubectl create service nodeport -h

如何更新對象 

?kubectl ?命令也支持一些動詞驅(qū)動的命令,用來執(zhí)行一些常見的更新操作。 這些命令的設計是為了讓一些不了解 Kubernetes 對象的用戶也能執(zhí)行更新操作, 但不需要了解哪些字段必須設置:

  • ?scale?:對某控制器進行水平擴縮以便通過更新控制器的副本個數(shù)來添加或刪除 Pod。
  • ?annotate?:為對象添加或刪除注解。
  • ?label?:為對象添加或刪除標簽。

?kubectl ?命令也支持由對象的某一方面來驅(qū)動的更新命令。 設置對象的這一方面可能對不同類別的對象意味著不同的字段:

  • ?set <字段>?:設置對象的某一方面。

Note: 在 Kubernetes 1.5 版本中,并非所有動詞驅(qū)動的命令都有對應的方面驅(qū)動的命令。

?kubectl ?工具支持以下額外的方式用來直接更新現(xiàn)時對象,不過這些操作要求 用戶對 Kubernetes 對象的模式定義有很好的了解:

  • ?edit?:通過在編輯器中打開現(xiàn)時對象的配置,直接編輯其原始配置。
  • ?patch?:通過使用補丁字符串(Patch String)直接更改某現(xiàn)時對象的的特定字段。 關于補丁字符串的更詳細信息,參見 API 約定 的 patch 節(jié)。

如何刪除對象 

你可以使用 ?delete ?命令從集群中刪除一個對象:

  • ?delete <類別>/<名稱>?

你可以使用 ?kubectl delete? 來執(zhí)行指令式命令或者指令式對象配置。不同之處在于 傳遞給命令的參數(shù)。要將 ?kubectl delete? 作為指令式命令使用,將要刪除的對象作為 參數(shù)傳遞給它。下面是一個刪除名為 ?nginx ?的 Deployment 對象的命令:

kubectl delete deployment/nginx

如何查看對象 

用來打印對象信息的命令有好幾個:

  • ?get?:打印匹配到的對象的基本信息。使用 get -h 可以查看選項列表。
  • ?describe?:打印匹配到的對象的詳細信息的匯集版本。
  • ?logs?:打印 Pod 中運行的容器的 stdout 和 stderr 輸出。

使用 set 命令在創(chuàng)建對象之前修改對象

有些對象字段在 ?create ?命令中沒有對應的標志。在這些場景中, 你可以使用 ?set ?和 ?create ?命令的組合來在對象創(chuàng)建之前設置字段值。 這是通過將 ?create ?命令的輸出用管道方式傳遞給 ?set ?命令來實現(xiàn)的, 最后執(zhí)行 ?create ?命令來創(chuàng)建對象。下面是一個例子:

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? 創(chuàng)建 Service 的配置,但 將其以 YAML 格式在標準輸出上打印而不是發(fā)送給 API 服務器。
  2. 命令 ?kubectl set selector --local -f - -o yaml? 從標準輸入讀入配置,并將更新后的 配置以 YAML 格式輸出到標準輸出。
  3. 命令 ?kubectl create -f -? 使用標準輸入上獲得的配置創(chuàng)建對象。

在創(chuàng)建之前使用 --edit 更改對象

你可以用 ?kubectl create --edit? 來在對象被創(chuàng)建之前執(zhí)行任意的變更。 下面是一個例子:

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? 創(chuàng)建 Service 的配置并將其保存到 ?/tmp/srv.yaml? 文件。
  2. 命令 ?kubectl create --edit? 在創(chuàng)建 Service 對象打開其配置文件進行編輯。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號