開始使用

本節包含在您的叢集上啟動工作負載最基本的命令。

一旦您的工作負載開始運行,您可以使用 應用程式操作 區段中的命令來檢查它們。


建立

使用 pod.json 中的資料建立 Pod

kubectl create -f ./pod.json

根據傳遞到 stdin 的 JSON 建立 Pod

cat pod.json | kubectl create -f -

以 JSON 格式編輯 docker-registry.yaml 中的資料,然後使用編輯後的資料建立資源

kubectl create -f docker-registry.yaml --edit -o json

從檔案或 stdin 建立資源。

接受 JSON 和 YAML 格式。

用法

$ kubectl create -f FILENAME

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
edit (編輯) false 在建立 API 資源之前編輯它
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
filename f [] 用於建立資源的檔案、目錄或 URL
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
raw 要 POST 到伺服器的原始 URI。使用 kubeconfig 檔案指定的傳輸方式。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
selector (選擇器) selector l
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate
如果為 true,則在使用綱要驗證輸入後再傳送它 false windows-line-endings

clusterrole (叢集角色)

僅在 --edit=true 時相關。預設為您平台的原生行尾符號。

kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods

建立名為 "pod-reader" 的叢集角色,該角色允許使用者對 Pod 執行 "get"、"watch" 和 "list" 操作

kubectl create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod

建立名為 "pod-reader" 的叢集角色,並指定 ResourceName

kubectl create clusterrole foo --verb=get,list,watch --resource=rs.extensions

建立名為 "foo" 的叢集角色,並指定 API 群組

kubectl create clusterrole foo --verb=get,list,watch --resource=pods,pods/status

建立名為 "foo" 的叢集角色,並指定 SubResource

kubectl create clusterrole "foo" --verb=get --non-resource-url=/logs/*

建立名為 "foo" 的叢集角色名稱,並指定 NonResourceURL

kubectl create clusterrole monitoring --aggregation-rule="rbac.example.com/aggregate-to-monitoring=true"

建立名為 "monitoring" 的叢集角色名稱,並指定 AggregationRule

用法

建立叢集角色。

旗標

名稱 縮寫 預設值 用法
$ kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run=server|client|none] aggregation-rule
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
用於組合 ClusterRole 的聚合標籤選擇器。 [] non-resource-url
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
使用者應有權存取的局部 URL。 [] resource
規則套用的資源 [] resource-name
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate
規則套用的白名單中的資源,重複此旗標以用於多個項目 [] verb

clusterrolebinding (叢集角色綁定)

套用於規則中包含的資源的動詞

kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1

使用 cluster-admin 叢集角色為 user1、user2 和 group1 建立叢集角色綁定

用法

為特定叢集角色建立叢集角色綁定。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
clusterrole (叢集角色) $ kubectl create clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
clusterrole [] 此 ClusterRoleBinding 應參考的 ClusterRole
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
serviceaccount (服務帳戶) [] group
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

configmap (組態地圖)

要綁定到叢集角色的群組

kubectl create configmap my-config --from-file=path/to/bar

serviceaccount

kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt

要綁定到叢集角色的服務帳戶,格式為 <namespace>:<name>

kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2

根據資料夾 bar 建立名為 my-config 的新組態地圖

kubectl create configmap my-config --from-file=path/to/bar

建立名為 my-config 的新組態地圖,並使用指定的鍵而不是磁碟上的檔案基本名稱

kubectl create configmap my-config --from-env-file=path/to/bar.env

建立名為 my-config 的新組態地圖,並使用 key1=config1 和 key2=config2

從檔案中的 key=value 對建立名為 my-config 的新組態地圖

從 env 檔案建立名為 my-config 的新組態地圖

根據檔案、目錄或指定的文字值建立組態地圖。

用法

單個組態地圖可以封裝一個或多個鍵/值對。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
當根據檔案建立組態地圖時,鍵將預設為檔案的基本名稱,值將預設為檔案內容。如果基本名稱是無效的鍵,您可以指定替代鍵。 false 當根據目錄建立組態地圖時,目錄中基本名稱為有效鍵的每個檔案都將封裝到組態地圖中。除了常規檔案之外的任何目錄項目都將被忽略(例如,子目錄、符號連結、裝置、管道等)。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
$ kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none] append-hash
將組態地圖的雜湊值附加到其名稱。 [] from-env-file
指定檔案路徑以讀取 key=val 對的行,以建立組態地圖(即 Docker .env 檔案)。 [] from-file
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

cronjob (排程任務)

可以使用其檔案路徑指定金鑰檔案,在這種情況下,檔案基本名稱將用作組態地圖金鑰,或者可以選擇使用金鑰和檔案路徑,在這種情況下,將使用給定的金鑰。指定目錄將迭代目錄中每個基本名稱為有效組態地圖金鑰的具名檔案。

kubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *"

from-literal

kubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *" -- date

指定要插入組態地圖中的金鑰和文字值(即 mykey=somevalue)

用法

建立 Cron Job

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
image (映像檔) 使用命令建立 Cron Job
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
restart (重新啟動) 使用指定的名稱建立 Cron Job。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
$ kubectl create cronjob NAME --image=image --schedule='0/5 * * * ?' -- [COMMAND] [args...] image
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

deployment (部署)

要運行的映像檔名稱。

kubectl create deployment my-dep --image=busybox

restart-policy

kubectl create deployment my-dep --image=busybox -- date

Job 的重新啟動策略。支援的值:OnFailure、Never

kubectl create deployment my-dep --image=nginx --replicas=3

schedule

kubectl create deployment my-dep --image=busybox --port=5701

Cron 格式的排程,Job 應按此排程運行。

用法

建立名為 my-dep 的 Deployment,該 Deployment 運行 busybox 映像檔

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
image (映像檔) [] 使用命令建立 Deployment
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
建立名為 my-dep 的 Deployment,該 Deployment 運行具有 3 個副本的 nginx 映像檔 -1 建立名為 my-dep 的 Deployment,該 Deployment 運行 busybox 映像檔並暴露端口 5701
使用指定的名稱建立 Deployment。 $ kubectl create deployment NAME --image=image -- [COMMAND] [args...] 1 image
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

ingress (網域名稱解析)

要運行的映像檔名稱。

kubectl create ingress simple --rule="foo.com/bar=svc1:8080,tls=my-cert"

port

kubectl create ingress catch-all --class=otheringress --rule="/path=svc:port"

此容器暴露的端口。

kubectl create ingress annotated --class=default --rule="foo.com/bar=svc:port" \
--annotation ingress.annotation1=foo \
--annotation ingress.annotation2=bla

replicas

kubectl create ingress multipath --class=default \
--rule="foo.com/=svc:port" \
--rule="foo.com/admin/=svcadmin:portadmin"

r

kubectl create ingress ingress1 --class=default \
--rule="foo.com/path*=svc:8080" \
--rule="bar.com/admin*=svc2:http"

要建立的副本數。預設值為 1。

kubectl create ingress ingtls --class=default \
--rule="foo.com/=svc:https,tls" \
--rule="foo.com/path/subpath*=othersvc:8080"

建立名為 'simple' 的單個 Ingress,該 Ingress 將請求導向到 foo.com/bar 到 svc # svc1:8080,並使用 TLS 密鑰 "my-cert"

kubectl create ingress ingsecret --class=default \
--rule="foo.com/*=svc:8080,tls=secret1"

建立指向服務 svc:port 的 "/path" 的全部捕獲 Ingress,並將 Ingress Class 設定為 "otheringress"

kubectl create ingress ingdefault --class=default \
--default-backend=defaultsvc:http \
--rule="foo.com/*=svc:8080,tls=secret1"

建立具有兩個註解的 Ingress:ingress.annotation1 和 ingress.annotations2

用法

建立具有相同主機和多個路徑的 Ingress

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
建立具有多個主機且 pathType 為 Prefix 的 Ingress [] 建立啟用 TLS 的 Ingress,使用預設 Ingress 憑證和不同的路徑類型
建立啟用 TLS 的 Ingress,使用特定的密鑰且 pathType 為 Prefix 建立具有預設後端的 Ingress
使用指定的名稱建立 Ingress。 $ kubectl create ingress NAME --rule=host/path=service:port[,tls[=secret]]
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
annotation [] 要插入 Ingress 物件中的註解,格式為 annotation=value
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

job (任務)

class

kubectl create job my-job --image=busybox

要使用的 Ingress Class

kubectl create job my-job --image=busybox -- date

default-backend

kubectl create job test-job --from=cronjob/a-cronjob

後端的預設服務,格式為 svcname:port

用法

rule

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
格式為 host/path=service:port[,tls=secretname] 的規則。包含前導字元 '*' 的路徑被視為 pathType=Prefix。tls 參數是選用的。 建立 Job
image (映像檔) 使用命令建立 Cron Job
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

namespace (命名空間)

使用命令建立 Job

kubectl create namespace my-namespace

從名為 "a-cronjob" 的 Cron Job 建立 Job

用法

使用指定的名稱建立 Job。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

poddisruptionbudget (Pod 中斷預算)

$ kubectl create job NAME --image=image [--from=cronjob/name] -- [COMMAND] [args...]

kubectl create poddisruptionbudget my-pdb --selector=app=rails --min-available=1

from

kubectl create pdb my-pdb --selector=app=nginx --min-available=50%

要從中建立 Job 的資源名稱(僅支援 Cron Job)。

用法

建立名為 my-namespace 的新命名空間

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
使用指定的名稱建立命名空間。 $ kubectl create namespace NAME [--dry-run=server|client|none]
建立名為 my-pdb 的 Pod 中斷預算,該預算將選取所有具有 app=rails 標籤的 Pod # 並要求在任何時間點都至少有一個 Pod 可用 建立名為 my-pdb 的 Pod 中斷預算,該預算將選取所有具有 app=nginx 標籤的 Pod # 並要求在任何時間點都至少有一半選取的 Pod 可用
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
selector (選擇器) 使用指定的名稱、選擇器和期望的最小可用 Pod 數建立 Pod 中斷預算。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

priorityclass (優先順序類別)

$ kubectl create poddisruptionbudget NAME --selector=SELECTOR --min-available=N [--dry-run=server|client|none]

kubectl create priorityclass high-priority --value=1000 --description="high priority"

max-unavailable

kubectl create priorityclass default-priority --value=1000 --global-default=true --description="default priority"

此預算要求的不可用 Pod 的最大數量或百分比。

kubectl create priorityclass high-priority --value=1000 --description="high priority" --preemption-policy="Never"

min-available

用法

此預算要求的最小可用 Pod 數量或百分比。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
selector 用於此預算的標籤選擇器。僅支援基於等式的選擇器需求。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
建立名為 high-priority 的優先順序類別 false 建立名為 default-priority 的優先順序類別,該類別被視為全域預設優先順序
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
建立名為 high-priority 的優先順序類別,該類別無法搶佔優先順序較低的 Pod 使用指定的名稱、值、globalDefault 和描述建立優先順序類別。 $ kubectl create priorityclass NAME --value=VALUE --global-default=BOOL [--dry-run=server|client|none]
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate
description 0 description 是一個任意字串,通常提供有關何時應使用此優先順序類別的指南。

quota (配額)

global-default

kubectl create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10

global-default 指定此 PriorityClass 是否應被視為預設優先順序。

kubectl create quota best-effort --hard=pods=100 --scopes=BestEffort

preemption-policy

用法

PreemptLowerPriority

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
preemption-policy 是用於搶佔優先順序較低的 Pod 的策略。 value
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
此優先順序類別的值。 建立名為 my-quota 的新資源配額
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

role (角色)

建立名為 best-effort 的新資源配額

kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods

使用指定的名稱、硬性限制和選用範圍建立資源配額。

kubectl create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod

$ kubectl create quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=server|client|none]

kubectl create role foo --verb=get,list,watch --resource=rs.extensions

hard

kubectl create role foo --verb=get,list,watch --resource=pods,pods/status

以逗號分隔的 resource=quantity 對集合,用於定義硬性限制。

用法

scopes

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
使用者應有權存取的局部 URL。 [] resource
規則套用的資源 [] resource-name
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate
規則套用的白名單中的資源,重複此旗標以用於多個項目 [] verb

rolebinding (角色綁定)

以逗號分隔的配額範圍集合,這些範圍必須全部符合配額追蹤的物件。

kubectl create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1

建立名為 "pod-reader" 的角色,該角色允許使用者對 Pod 執行 "get"、"watch" 和 "list" 操作

用法

建立名為 "pod-reader" 的角色,並指定 ResourceName

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
clusterrole (叢集角色) 建立名為 "foo" 的角色,並指定 API 群組
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
clusterrole [] 建立名為 "foo" 的角色,並指定 SubResource
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
role (角色) 建立具有單個規則的角色。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
serviceaccount (服務帳戶) [] $ kubectl create role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run=server|client|none]
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

secret (密鑰)

使用 admin 叢集角色為 user1、user2 和 group1 建立角色綁定

用法

為特定角色或叢集角色建立角色綁定。


secret docker-registry (密鑰 docker 登錄檔)

$ kubectl create rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]

kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

clusterrole

kubectl create secret docker-registry my-secret --from-file=.dockerconfigjson=path/to/.docker/config.json

此 RoleBinding 應參考的 ClusterRole

group

要綁定到角色的群組

role

此 RoleBinding 應參考的角色

用法

serviceaccount

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
當根據檔案建立組態地圖時,鍵將預設為檔案的基本名稱,值將預設為檔案內容。如果基本名稱是無效的鍵,您可以指定替代鍵。 false 要綁定到角色的服務帳戶,格式為 <namespace>:<name>
使用指定的子命令建立密鑰。 $ kubectl create secret
如果您還沒有 .dockercfg 檔案,則可以使用以下命令直接建立 dockercfg 密鑰 從 ~/.docker/config.json 建立名為 my-secret 的新密鑰
建立用於 Docker 登錄檔的新密鑰。 Dockercfg 密鑰用於針對 Docker 登錄檔進行驗證。 當使用 Docker 命令列推送映像檔時,您可以透過運行:'$ docker login DOCKER_REGISTRY_SERVER --username=DOCKER_USER --password=DOCKER_PASSWORD --email=DOCKER_EMAIL' 來驗證給定登錄檔的身份。
這會產生一個 ~/.dockercfg 檔案,後續的 'docker push' 和 'docker pull' 命令使用該檔案來驗證登錄檔的身份。電子郵件地址是選用的。 當建立應用程式時,您可能會有一個需要驗證的 Docker 登錄檔。為了讓節點代表您提取映像檔,它們必須具有憑證。您可以透過建立 dockercfg 密鑰並將其附加到您的服務帳戶來提供此資訊。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
將組態地圖的雜湊值附加到其名稱。 [] $ kubectl create secret docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-file=[key=]source] [--dry-run=server|client|none]
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

secret generic (通用密鑰)

append-hash

kubectl create secret generic my-secret --from-file=path/to/bar

將密鑰的雜湊值附加到其名稱。

kubectl create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-file=ssh-publickey=path/to/id_rsa.pub

docker-email

kubectl create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret

Docker 登錄檔的電子郵件

kubectl create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-literal=passphrase=topsecret

docker-password

kubectl create secret generic my-secret --from-env-file=path/to/bar.env

Docker 登錄檔驗證的密碼

docker-server

https://index.docker.io/v1/

Docker 登錄檔的伺服器位置

用法

docker-username

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
當根據檔案建立組態地圖時,鍵將預設為檔案的基本名稱,值將預設為檔案內容。如果基本名稱是無效的鍵,您可以指定替代鍵。 false 要綁定到角色的服務帳戶,格式為 <namespace>:<name>
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
$ kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none] Docker 登錄檔驗證的使用者名稱
將組態地圖的雜湊值附加到其名稱。 [] $ kubectl create secret docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-file=[key=]source] [--dry-run=server|client|none]
指定檔案路徑以讀取 key=val 對的行,以建立組態地圖(即 Docker .env 檔案)。 [] 可以使用其檔案路徑指定金鑰檔案,在這種情況下,將為它們提供預設名稱,或者可以選擇使用名稱和檔案路徑,在這種情況下,將使用給定的名稱。指定目錄將迭代目錄中每個作為有效密鑰的具名檔案。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
為資料夾 bar 中的每個檔案建立名為 my-secret 的新密鑰 建立名為 my-secret 的新密鑰,並使用指定的金鑰而不是磁碟上的名稱
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

secret tls (TLS 密鑰)

建立名為 my-secret 的新密鑰,並使用 key1=supersecret 和 key2=topsecret

kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key

建立名為 my-secret 的新密鑰,並結合使用檔案和文字

從 env 檔案建立名為 my-secret 的新密鑰

用法

根據檔案、目錄或指定的文字值建立密鑰。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
當根據檔案建立組態地圖時,鍵將預設為檔案的基本名稱,值將預設為檔案內容。如果基本名稱是無效的鍵,您可以指定替代鍵。 false 要綁定到角色的服務帳戶,格式為 <namespace>:<name>
單個密鑰可以封裝一個或多個鍵/值對。 當根據檔案建立密鑰時,金鑰將預設為檔案的基本名稱,值將預設為檔案內容。如果基本名稱是無效的金鑰,或者您希望選擇自己的金鑰,則可以指定替代金鑰。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
當根據目錄建立密鑰時,目錄中基本名稱為有效金鑰的每個檔案都將封裝到密鑰中。除了常規檔案之外的任何目錄項目都將被忽略(例如,子目錄、符號連結、裝置、管道等)。 $ kubectl create generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

service (服務)

from-env-file

用法

指定檔案路徑以讀取 key=val 對的行,以建立密鑰(即 Docker .env 檔案)。


service clusterip (ClusterIP 服務)

from-literal

kubectl create service clusterip my-cs --tcp=5678:8080

指定要插入密鑰中的金鑰和文字值(即 mykey=somevalue)

kubectl create service clusterip my-cs --clusterip="None"

type

用法

要建立的密鑰類型

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
使用給定的金鑰對建立名為 tls-secret 的新 TLS 密鑰 從給定的公鑰/私鑰對建立 TLS 密鑰。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
公鑰/私鑰對必須事先存在。公鑰憑證必須是 .PEM 編碼,並且與給定的私鑰匹配。 [] $ kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

service externalname (ExternalName 服務)

cert

kubectl create service externalname my-ns --external-name bar.com

PEM 編碼公鑰憑證的路徑。

key

用法

與給定憑證關聯的私鑰路徑。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
使用指定的子命令建立服務。 $ kubectl create service
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
公鑰/私鑰對必須事先存在。公鑰憑證必須是 .PEM 編碼,並且與給定的私鑰匹配。 [] $ kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

service loadbalancer (LoadBalancer 服務)

建立名為 my-cs 的新 ClusterIP 服務

kubectl create service loadbalancer my-lbs --tcp=5678:8080

建立名為 my-cs 的新 ClusterIP 服務(以無頭模式)

用法

使用指定的名稱建立 ClusterIP 服務。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
公鑰/私鑰對必須事先存在。公鑰憑證必須是 .PEM 編碼,並且與給定的私鑰匹配。 [] $ kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

service nodeport (NodePort 服務)

$ kubectl create service clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run=server|client|none]

kubectl create service nodeport my-ns --tcp=5678:8080

clusterip

用法

指派您自己的 ClusterIP 或設定為 'None' 以用於 '無頭' 服務(無負載平衡)。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
tcp 0 端口對可以指定為 '<port>:<targetPort>'。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
公鑰/私鑰對必須事先存在。公鑰憑證必須是 .PEM 編碼,並且與給定的私鑰匹配。 [] $ kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

serviceaccount (服務帳戶)

建立名為 my-ns 的新 ExternalName 服務

kubectl create serviceaccount my-service-account

使用指定的名稱建立 ExternalName 服務。

用法

ExternalName 服務參考外部 DNS 地址,而不僅僅是 Pod,這將允許應用程式作者參考存在於平台外部、其他叢集或本機上的服務。

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-create 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

取得

$ kubectl create service externalname NAME --external-name external.name [--dry-run=server|client|none]

kubectl get pods

external-name

kubectl get pods -o wide

服務的外部名稱

kubectl get replicationcontroller web

建立名為 my-lbs 的新 LoadBalancer 服務

kubectl get deployments.v1.apps -o json

使用指定的名稱建立 LoadBalancer 服務。

kubectl get -o json pod web-pod-13je7

$ kubectl create service loadbalancer NAME [--tcp=port:targetPort] [--dry-run=server|client|none]

kubectl get -f pod.yaml -o json

建立名為 my-ns 的新 NodePort 服務

kubectl get -k dir/

使用指定的名稱建立 NodePort 服務。

kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}

$ kubectl create service nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]

kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image

node-port

kubectl get rc,services

用於在叢集中每個節點上暴露服務的端口。

kubectl get rc/web service/frontend pods/web-pod-13je7

建立名為 my-service-account 的新服務帳戶

使用指定的名稱建立服務帳戶。

$ kubectl create serviceaccount NAME [--dry-run=server|client|none]

以 ps 輸出格式列出所有 Pod

以 ps 輸出格式列出所有 Pod,並包含更多資訊(例如節點名稱)

用法

以 ps 輸出格式列出具有指定 NAME 的單個複製控制器

旗標

名稱 縮寫 預設值 用法
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 以 JSON 輸出格式列出 "pod.yaml" 中指定的類型和名稱識別的 Pod
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
從具有 kustomization.yaml 的目錄列出資源 - 例如 dir/kustomization.yaml 500 僅傳回指定 Pod 的 phase 值
以自訂欄位列出資源資訊 以 ps 輸出格式一起列出所有複製控制器和服務
filename f [] 依類型和名稱列出一個或多個資源
顯示一個或多個資源。 false 列印有關指定資源的最重要資訊的表格。您可以使用標籤選擇器和 --selector 旗標來篩選列表。如果所需的資源類型是命名空間範圍的,則您只會看到目前命名空間中的結果,除非您傳遞 --all-namespaces。
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
除非傳遞 --include-uninitialized,否則不會顯示未初始化的物件。 透過將輸出指定為 'template' 並提供 Go 範本作為 --template 旗標的值,您可以篩選提取的資源的屬性。 [] 使用 "kubectl api-resources" 以取得支援資源的完整列表。
$ kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [旗標] false all-namespaces
output o A
如果存在,則跨所有命名空間列出請求的物件。即使使用 --namespace 指定,也會忽略目前上下文中的命名空間。 false chunk-size
raw 以區塊形式傳回大型列表,而不是一次全部傳回。傳遞 0 以停用。此旗標為 Beta 版,將來可能會變更。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector l
field-selector true 要篩選的選擇器(欄位查詢),支援 '='、'==' 和 '!='。(例如 --field-selector key1=value1,key2=value2)。伺服器僅支援每種類型有限數量的欄位查詢。
filename false f
用於識別要從伺服器取得的資源的檔案、目錄或 URL。 false ignore-not-found
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果請求的物件不存在,則命令將傳回結束代碼 0。 label-columns
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
L false 接受以逗號分隔的標籤列表,這些標籤將作為欄位呈現。名稱區分大小寫。您也可以使用多個旗標選項,例如 -L label1 -L label2...
no-headers 當使用預設或自訂欄位輸出格式時,請勿列印標頭(預設為列印標頭)。 false output
o false 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns-file|custom-columns|wide 請參閱自訂欄位 [https://kubernetes.dev.org.tw/docs/reference/kubectl/overview/#custom-columns]、golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] 和 jsonpath 範本 [https://kubernetes.dev.org.tw/docs/reference/kubectl/jsonpath/]

執行

output-watch-events

kubectl run nginx --image=nginx

當使用 --watch 或 --watch-only 時,輸出監看事件物件。現有物件會作為初始 ADDED 事件輸出。

kubectl run hazelcast --image=hazelcast/hazelcast --port=5701

raw

kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"

要從伺服器請求的原始 URI。使用 kubeconfig 檔案指定的傳輸方式。

kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"

server-print

kubectl run nginx --image=nginx --dry-run=client

如果為 true,則讓伺服器傳回適當的表格輸出。支援擴充 API 和 CRD。

kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }'

show-kind

kubectl run -i -t busybox --image=busybox --restart=Never

如果存在,則列出請求物件的資源類型。

kubectl run nginx --image=nginx -- <arg1> <arg2> ... <argN>

show-labels

kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>

列印時,將所有標籤顯示為最後一欄(預設為隱藏標籤欄位)

用法

sort-by

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
如果非空,則使用此欄位規格對列表類型進行排序。欄位規格表示為 JSONPath 表達式(例如 '{.metadata.name}')。此 JSONPath 表達式指定的 API 資源中的欄位必須是整數或字串。 [] use-openapi-print-columns
attach (附加) false 如果為 true,則使用 OpenAPI 綱要中的 x-kubernetes-print-column metadata(如果存在)來顯示資源。
watch w 在列出/取得請求的物件後,監看變更。如果未提供物件名稱,則排除未初始化的物件。
watch-only false 監看請求物件的變更,而不先列出/取得。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
env (環境變數) [] 啟動 nginx Pod
暴露 false 啟動 hazelcast Pod 並讓容器暴露端口 5701
field-manager 啟動 hazelcast Pod 並在容器中設定環境變數 "DNS_DOMAIN=cluster" 和 "POD_NAMESPACE=default" 用於追蹤欄位所有權的管理員名稱。
filename f [] 啟動 hazelcast Pod 並在容器中設定標籤 "app=hazelcast" 和 "env=prod"
Dry run;列印對應的 API 物件而不建立它們 false 啟動 nginx Pod,但使用從 JSON 剖析的部分值集覆寫規格
啟動 busybox Pod 並使其保持在前台,如果它退出則不要重新啟動它 -1 使用預設命令啟動 nginx Pod,但對該命令使用自訂引數 (arg1 .. argN)
使用不同的命令和自訂引數啟動 nginx Pod -1 在 Pod 中建立並運行特定的映像檔。
image (映像檔) $ kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
annotations 要套用於 Pod 的註解。
kustomize (客製化) kustomize attach
如果為 true,則等待 Pod 開始運行,然後附加到 Pod,就像呼叫 'kubectl attach ...' 一樣。預設值為 false,除非設定 '-i/--stdin',在這種情況下,預設值為 true。使用 '--restart=Never' 時,會傳回容器處理程序的結束代碼。 selector cascade
background false 必須為 "background"、"orphan" 或 "foreground"。選取依賴項的刪除級聯策略(例如 ReplicationController 建立的 Pod)。預設值為 background。
command 如果為 true 且存在額外引數,則將它們用作容器中的 'command' 欄位,而不是預設的 'args' 欄位。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
env 要在容器中設定的環境變數。
expose 如果為 true,則為運行的容器建立服務 field-manager
建立名為 my-dep 的 Deployment,該 Deployment 運行具有 3 個副本的 nginx 映像檔 建立名為 my-dep 的 Deployment,該 Deployment 運行 busybox 映像檔並暴露端口 5701
kubectl-run false force
用於取代資源。 force false 如果為 true,則立即從 API 中移除資源並略過正常刪除。請注意,立即刪除某些資源可能會導致不一致或資料遺失,並且需要確認。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
grace-period 給予資源正常終止的時間段(秒)。如果為負數則忽略。設定為 1 以立即關閉。僅當 --force 為 true(強制刪除)時才能設定為 0。
restart (重新啟動) hostport 容器端口的主機端口映射。用於示範單機容器。
image false 要運行的容器的映像檔。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
serviceaccount (服務帳戶) image-pull-policy
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
容器的映像檔提取策略。如果留空,則此值不會由用戶端指定,而是由伺服器預設設定 kustomize false 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
labels 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 leave-stdin-open
如果 Pod 在互動模式下或使用 stdin 啟動,則在第一次附加完成後保持 stdin 開啟。預設情況下,stdin 將在第一次附加完成後關閉。 limits false 此容器的資源需求限制。例如,'cpu=200m,memory=512Mi'。請注意,伺服器端元件可能會根據伺服器組態(例如限制範圍)指派限制。
wait (等待) false overrides

暴露

為產生的物件提供的內嵌 JSON 覆寫。如果此值為非空值,則會使用它來覆寫產生的物件。要求物件提供有效的 apiVersion 欄位。

kubectl expose rc nginx --port=80 --target-port=8000

pod-running-timeout

kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000

1m0s

kubectl expose pod valid-pod --port=444 --name=frontend

等待至少一個 Pod 運行所需的時間長度(例如 5 秒、2 分鐘或 3 小時,高於零)

kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https

privileged

kubectl expose rc streamer --port=4100 --protocol=UDP --name=video-stream

如果為 true,則以特權模式運行容器。

kubectl expose rs nginx --port=80 --target-port=8000

quiet

kubectl expose deployment nginx --port=80 --target-port=8000

q

如果為 true,則抑制提示訊息。

requests

此容器的資源需求請求。例如,'cpu=100m,memory=256Mi'。請注意,伺服器端元件可能會根據伺服器組態(例如限制範圍)指派請求。

用法

restart

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
Always 此 Pod 的重新啟動策略。合法值 [Always, OnFailure, Never]
rm 如果為 true,則刪除在此命令中為附加容器建立的資源。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
serviceaccount 要在 Pod 規格中設定的服務帳戶。
field-manager stdin 用於追蹤欄位所有權的管理員名稱。
filename f [] i
即使未附加任何內容,也保持 Pod 中容器上的 stdin 開啟。 timeout 0s
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
如果為 true,則等待 Pod 開始運行,然後附加到 Pod,就像呼叫 'kubectl attach ...' 一樣。預設值為 false,除非設定 '-i/--stdin',在這種情況下,預設值為 true。使用 '--restart=Never' 時,會傳回容器處理程序的結束代碼。 selector 放棄刪除之前要等待的時間長度,零表示從物件大小判斷逾時時間
tty t
為 Pod 中的每個容器分配 TTY。 wait
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
env 要在容器中設定的環境變數。
建立名為 my-dep 的 Deployment,該 Deployment 運行具有 3 個副本的 nginx 映像檔 如果為 true,則在傳回之前等待資源消失。這會等待 Finalizers。
為複製的 nginx 建立服務,該服務在端口 80 上提供服務,並連接到端口 8000 上的容器 為 "nginx-controller.yaml" 中指定的類型和名稱識別的複製控制器建立服務,該服務在端口 80 上提供服務,並連接到端口 8000 上的容器
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
selector (選擇器) 為 Pod valid-pod 建立服務,該服務以名稱 "frontend" 在端口 444 上提供服務
根據上述服務建立第二個服務,將容器端口 8443 暴露為端口 443,名稱為 "nginx-https" 為端口 4100 上複製的串流應用程式建立服務,該服務平衡 UDP 流量並命名為 'video-stream'。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
為使用副本集的複製 nginx 建立服務,該服務在端口 80 上提供服務,並連接到端口 8000 上的容器 為 nginx Deployment 建立服務,該服務在端口 80 上提供服務,並連接到端口 8000 上的容器
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
為資料夾 bar 中的每個檔案建立名為 my-secret 的新密鑰 將資源暴露為新的 Kubernetes 服務。

刪除

依名稱查詢 Deployment、服務、副本集、複製控制器或 Pod,並使用該資源的選擇器作為指定端口上新服務的選擇器。僅當 Deployment 或副本集的選擇器可轉換為服務支援的選擇器時,才會將 Deployment 或副本集暴露為服務,即當選擇器僅包含 matchLabels 元件時。請注意,如果未透過 --port 指定端口,且暴露的資源具有多個端口,則所有端口都將由新服務重複使用。此外,如果未指定標籤,則新服務將重複使用其暴露的資源中的標籤。

kubectl delete -f ./pod.json

可能的資源包括(不區分大小寫)

kubectl delete -k dir

Pod (po)、服務 (svc)、複製控制器 (rc)、Deployment (deploy)、副本集 (rs)

cat pod.json | kubectl delete -f -

$ kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

kubectl delete pod,service baz foo

cluster-ip

kubectl delete pods,services -l name=myLabel

要指派給服務的 ClusterIP。留空以自動分配,或設定為 'None' 以建立無頭服務。

kubectl delete pod foo --now

container-port

kubectl delete pod foo --force

--target-port 的同義詞

kubectl delete pods --all

external-ip

JSON 和 YAML 格式皆被接受。只能指定一種參數類型:檔案名稱、資源和名稱,或資源和標籤選擇器。

某些資源,例如 Pod,支援優雅刪除。這些資源定義了強制終止前的預設期限(寬限期),但您可以使用 --grace-period 旗標覆寫該值,或傳遞 --now 以將寬限期設定為 1。由於這些資源通常代表叢集中的實體,因此刪除可能不會立即被確認。如果託管 Pod 的節點關閉或無法連線到 API 伺服器,則終止可能需要比寬限期長得多的時間。若要強制刪除資源,您必須指定 --force 旗標。注意:只有部分資源支援優雅刪除。在不支援的情況下,--grace-period 旗標會被忽略。

重要事項:強制刪除 Pod 不會等待確認 Pod 的程序已終止,這可能會使這些程序持續執行,直到節點偵測到刪除並完成優雅刪除。如果您的程序使用共用儲存空間或與遠端 API 通訊,並且依賴 Pod 的名稱來識別自身,則強制刪除這些 Pod 可能會導致多個程序在不同的機器上使用相同的識別身分執行,這可能會導致資料損毀或不一致。只有在您確定 Pod 已終止,或者您的應用程式可以容忍同一個 Pod 同時執行多個副本時,才強制刪除 Pod。此外,如果您強制刪除 Pod,排程器可能會在節點釋放這些資源之前,將新的 Pod 放置在這些節點上,導致這些 Pod 立即被驅逐。

請注意,delete 指令不會執行資源版本檢查,因此如果有人在您提交刪除時提交資源更新,他們的更新將會連同資源的其餘部分一起遺失。

用法

$ kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)])

旗標

名稱 縮寫 預設值 用法
all false 刪除指定資源類型命名空間中的所有資源,包括未初始化的資源。
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 以 JSON 輸出格式列出 "pod.yaml" 中指定的類型和名稱識別的 Pod
watch w 在列出/取得請求的物件後,監看變更。如果未提供物件名稱,則排除未初始化的物件。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
以自訂欄位列出資源資訊 以 ps 輸出格式一起列出所有複製控制器和服務
filename f [] 包含要刪除的資源。
Dry run;列印對應的 API 物件而不建立它們 false 啟動 nginx Pod,但使用從 JSON 剖析的部分值集覆寫規格
啟動 busybox Pod 並使其保持在前台,如果它退出則不要重新啟動它 -1 使用預設命令啟動 nginx Pod,但對該命令使用自訂引數 (arg1 .. argN)
顯示一個或多個資源。 false 將「找不到資源」視為成功刪除。當指定 --all 時,預設為「true」。
kustomize (客製化) kustomize attach
now false 若為 true,資源會被發出訊號立即關閉(與 --grace-period=1 相同)。
output o 輸出模式。使用 "-o name" 以獲得較短的輸出 (resource/name)。
raw 要 DELETE 到伺服器的原始 URI。使用 kubeconfig 檔案指定的傳輸方式。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector 要篩選的選擇器(標籤查詢),不包括未初始化的資源。
labels 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 leave-stdin-open
wait (等待) true overrides

應用程式管理

本節包含用於在 Kubernetes 叢集中建立、更新、刪除和檢視您的工作負載的指令。


套用

將 pod.json 中的組態套用至 Pod

kubectl apply -f ./pod.json

從包含 kustomization.yaml 的目錄套用資源 - 例如 dir/kustomization.yaml

kubectl apply -k dir/

將傳遞到 stdin 的 JSON 套用至 Pod

cat pod.json | kubectl apply -f -

注意:--prune 仍在 Alpha 階段 # 套用 manifest.yaml 中符合標籤 app=nginx 的組態,並刪除檔案中不存在且符合標籤 app=nginx 的所有其他資源

kubectl apply --prune -f manifest.yaml -l app=nginx

套用 manifest.yaml 中的組態,並刪除檔案中不存在的所有其他組態地圖

kubectl apply --prune -f manifest.yaml --all --prune-whitelist=core/v1/ConfigMap

依檔案名稱或 stdin 將組態套用至資源。必須指定資源名稱。如果資源尚不存在,將會建立此資源。若要使用 'apply',請務必先使用 'apply' 或 'create --save-config' 建立資源。

接受 JSON 和 YAML 格式。

Alpha 免責聲明:--prune 功能尚未完成。除非您了解目前狀態,否則請勿使用。請參閱 https://issues.k8s.io/34274

用法

$ kubectl apply (-f FILENAME | -k DIRECTORY)

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源。
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
watch w 在列出/取得請求的物件後,監看變更。如果未提供物件名稱,則排除未初始化的物件。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-client-side-apply 用於追蹤欄位所有權的管理員名稱。
filename f [] 其中包含要套用的組態
Dry run;列印對應的 API 物件而不建立它們 false 啟動 nginx Pod,但使用從 JSON 剖析的部分值集覆寫規格
force-conflicts false 若為 true,伺服器端套用將強制針對衝突進行變更。
啟動 busybox Pod 並使其保持在前台,如果它退出則不要重新啟動它 -1 使用預設命令啟動 nginx Pod,但對該命令使用自訂引數 (arg1 .. argN)
kustomize (客製化) kustomize attach
openapi-patch true 若為 true,當 openapi 存在且可以在 openapi 規格中找到資源時,使用 openapi 計算差異。否則,回退使用內建類型。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite true 透過使用修改後的組態中的值,自動解決修改後的組態與即時組態之間的衝突
prune false 自動刪除未出現在組態中,且由 apply 或 create --save-config 建立的資源物件,包括未初始化的資源物件。應與 -l 或 --all 一起使用。
prune-whitelist [] 使用 <group/version/kind> 覆寫 --prune 的預設白名單
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector l
server-side false 若為 true,套用會在伺服器而非用戶端中執行。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
labels 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 leave-stdin-open
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate
wait (等待) false overrides

edit-last-applied (編輯上次套用)

以 YAML 格式編輯 type/name 的 last-applied-configuration 註釋

kubectl apply edit-last-applied deployment/nginx

以 JSON 格式編輯檔案中的 last-applied-configuration 註釋

kubectl apply edit-last-applied -f deploy.yaml -o json

從預設編輯器編輯資源的最新 last-applied-configuration 註釋。

edit-last-applied 指令可讓您直接編輯任何可以透過命令列工具檢索的 API 資源。它將開啟由您的 KUBE_EDITOR 或 EDITOR 環境變數定義的編輯器,或回退到 Linux 的 'vi' 或 Windows 的 'notepad'。您可以編輯多個物件,但變更會一次套用一個。該指令接受檔案名稱以及命令列引數,但您指向的檔案必須是先前儲存的資源版本。

預設格式為 YAML。若要以 JSON 格式編輯,請指定 "-o json"。

--windows-line-endings 旗標可用於強制使用 Windows 行尾,否則將使用您作業系統的預設值。

如果在更新時發生錯誤,將會在磁碟上建立一個暫存檔,其中包含您未套用的變更。更新資源時最常見的錯誤是另一個編輯器在伺服器上變更了資源。當這種情況發生時,您必須將您的變更套用至較新版本的資源,或更新您的暫存儲存副本以包含最新的資源版本。

用法

$ kubectl apply edit-last-applied (RESOURCE/NAME | -f FILENAME)

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
field-manager kubectl-client-side-apply 用於追蹤欄位所有權的管理員名稱。
filename f [] 要用於編輯資源的檔案的檔案名稱、目錄或 URL
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
如果為 true,則在使用綱要驗證輸入後再傳送它 false 預設為您平台的原生行尾。

set-last-applied (設定上次套用)

設定資源的 last-applied-configuration 以符合檔案的內容

kubectl apply set-last-applied -f deploy.yaml

針對目錄中的每個組態檔執行 set-last-applied

kubectl apply set-last-applied -f path/

設定資源的 last-applied-configuration 以符合檔案的內容;如果註釋尚不存在,將會建立註釋

kubectl apply set-last-applied -f deploy.yaml --create-annotation=true

設定最新的 last-applied-configuration 註釋,使其符合檔案的內容。這會導致 last-applied-configuration 被更新,如同執行了 'kubectl apply -f',而不會更新物件的任何其他部分。

用法

$ kubectl apply set-last-applied -f FILENAME

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
create-annotation false 如果目前的物件沒有 'last-applied-configuration' 註釋,將會建立註釋
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
filename f [] 包含 last-applied-configuration 註釋的檔案的檔案名稱、目錄或 URL
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

view-last-applied (檢視上次套用)

以 YAML 格式檢視 type/name 的 last-applied-configuration 註釋

kubectl apply view-last-applied deployment/nginx

以 JSON 格式檢視檔案中的 last-applied-configuration 註釋

kubectl apply view-last-applied -f deploy.yaml -o json

依 type/name 或檔案檢視最新的 last-applied-configuration 註釋。

預設輸出將以 YAML 格式列印到 stdout。您可以使用 -o 選項來變更輸出格式。

用法

$ kubectl apply view-last-applied (TYPE [NAME | -l label] | TYPE/NAME | -f FILENAME)

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源
filename f [] 包含 last-applied-configuration 註釋的檔案的檔案名稱、目錄或 URL
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o yaml 輸出格式。必須是 yaml|json 其中之一
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector l

annotate (註解)

使用註釋 'description' 和值 'my frontend' 更新 Pod 'foo' # 如果同一個註釋設定多次,則只會套用最後一個值

kubectl annotate pods foo description='my frontend'

在 "pod.json" 中依類型和名稱識別的 Pod 更新

kubectl annotate -f pod.json description='my frontend'

使用註釋 'description' 和值 'my frontend running nginx' 更新 Pod 'foo',覆寫任何現有值

kubectl annotate --overwrite pods foo description='my frontend running nginx'

更新命名空間中的所有 Pod

kubectl annotate pods --all description='my frontend running nginx'

只有在資源與版本 1 相比未變更時,才更新 Pod 'foo'

kubectl annotate pods foo description='my frontend running nginx' --resource-version=1

移除名為 'description' 的註釋(如果存在)來更新 Pod 'foo' # 不需要 --overwrite 旗標

kubectl annotate pods foo description-

更新一個或多個資源上的註釋。

所有 Kubernetes 物件都支援將額外資料與物件一起儲存為註釋的功能。註釋是鍵/值對,可以比標籤更大,並包含任意字串值,例如結構化 JSON。工具和系統擴充功能可以使用註釋來儲存它們自己的資料。

嘗試設定已存在的註釋將會失敗,除非設定了 --overwrite。如果指定了 --resource-version 且與伺服器上的目前資源版本不符,則指令將會失敗。

以 ps 輸出格式列出所有 Pod,並包含更多資訊(例如節點名稱)

用法

$ kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源,包括未初始化的資源。
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 若為 true,請檢查所有命名空間中的指定動作。
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-annotate 用於追蹤欄位所有權的管理員名稱。
以自訂欄位列出資源資訊 以 ps 輸出格式一起列出所有複製控制器和服務
filename f [] 檔案名稱、目錄或 URL,用於識別要更新註釋的資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
list (列表) false 若為 true,顯示給定資源的註釋。
local false 若為 true,註釋將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite false 若為 true,允許覆寫註釋,否則拒絕覆寫現有註釋的註釋更新。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
resource-version 若為非空值,只有在這是物件的目前資源版本時,註釋更新才會成功。僅在指定單一資源時有效。
selector (選擇器) selector 要篩選的選擇器(標籤查詢),不包括未初始化的資源,支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2)。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

autoscale (自動擴展)

自動調整部署 "foo" 的規模,Pod 數量介於 2 到 10 之間,未指定目標 CPU 使用率,因此將使用預設自動調整規模原則

kubectl autoscale deployment foo --min=2 --max=10

自動調整複製控制器 "foo" 的規模,Pod 數量介於 1 到 5 之間,目標 CPU 使用率為 80%

kubectl autoscale rc foo --max=5 --cpu-percent=80

建立自動調整器,自動選擇和設定在 Kubernetes 叢集中執行的 Pod 數量。

依名稱查詢部署、副本集、StatefulSet 或複製控制器,並建立將給定資源用作參考的自動調整器。自動調整器可以根據需要自動增加或減少系統中部署的 Pod 數量。

用法

$ kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU]

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
cpu-percent -1 所有 Pod 的目標平均 CPU 使用率(表示為請求 CPU 的百分比)。如果未指定或為負數,將會使用預設自動調整規模原則。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-autoscale 用於追蹤欄位所有權的管理員名稱。
filename f [] 檔案名稱、目錄或 URL,用於識別要自動調整規模的資源。
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
max -1 自動調整器可以設定的 Pod 數量的上限。必要參數。
min -1 自動調整器可以設定的 Pod 數量的下限。如果未指定或為負數,伺服器將套用預設值。
為 Pod 中的每個容器分配 TTY。 新建立物件的名稱。如果未指定,將使用輸入資源的名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

debug (除錯)

在 Pod mypod 中建立互動式偵錯會話,並立即附加到它。# (需要在叢集中啟用 EphemeralContainers 功能)

kubectl debug mypod -it --image=busybox

使用自訂自動偵錯映像建立名為 debugger 的偵錯容器。# (需要在叢集中啟用 EphemeralContainers 功能)

kubectl debug --image=myproj/debug-tools -c debugger mypod

建立 mypod 的副本,新增偵錯容器並附加到它

kubectl debug mypod -it --image=busybox --copy-to=my-debugger

建立 mypod 的副本,變更 mycontainer 的指令

kubectl debug mypod -it --copy-to=my-debugger --container=mycontainer -- sh

建立 mypod 的副本,將所有容器映像變更為 busybox

kubectl debug mypod --copy-to=my-debugger --set-image=*=busybox

建立 mypod 的副本,新增偵錯容器並變更容器映像

kubectl debug mypod -it --copy-to=my-debugger --image=debian --set-image=app=app:debug,sidecar=sidecar:debug

在節點上建立互動式偵錯會話,並立即附加到它。# 容器將在主機命名空間中執行,並且主機的檔案系統將掛載在 /host

kubectl debug node/mynode -it --image=busybox

使用互動式偵錯容器偵錯叢集資源。

'debug' 為依資源和名稱識別的叢集物件的常見偵錯任務提供自動化。如果未指定資源,預設將使用 Pod。

'debug' 採取的動作會根據指定的資源而有所不同。支援的動作包括

用法

$ kubectl debug (POD | TYPE[[.VERSION].GROUP]/NAME) [ -- COMMAND [args...] ]

旗標

名稱 縮寫 預設值 用法
arguments-only false 如果指定,-- 後面的所有內容都將作為 Args 而非 Command 傳遞至新容器。
attach (附加) false 若為 true,等待容器開始執行,然後附加,如同呼叫了 'kubectl attach ...' 一樣。預設為 false,除非設定了 '-i/--stdin',在這種情況下,預設為 true。
container c 用於偵錯容器的容器名稱。
copy-to 建立目標 Pod 的副本,並使用此名稱。
env (環境變數) [] 啟動 nginx Pod
image (映像檔) 用於偵錯容器的容器映像。
annotations 容器的映像提取原則。如果留空,用戶端將不會指定此值,並且伺服器將預設此值。
用於取代資源。 force false 若為 true,則隱藏資訊訊息。
replace (取代) false 與 '--copy-to' 一起使用時,刪除原始 Pod。
same-node false 與 '--copy-to' 一起使用時,將目標 Pod 的副本排程在同一個節點上。
set-image [] 與 '--copy-to' 一起使用時,用於變更容器映像的 name=image 配對清單,類似於 'kubectl set image' 的運作方式。
share-processes true 與 '--copy-to' 一起使用時,在副本中啟用程序命名空間共用。
容器的映像檔提取策略。如果留空,則此值不會由用戶端指定,而是由伺服器預設設定 kustomize false 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
target 使用臨時容器時,以此容器名稱為目標程序。
如果 Pod 在互動模式下或使用 stdin 啟動,則在第一次附加完成後保持 stdin 開啟。預設情況下,stdin 將在第一次附加完成後關閉。 limits false 為偵錯容器配置 TTY。

diff (差異)

差異比較 pod.json 中包含的資源

kubectl diff -f pod.json

差異比較從 stdin 讀取的檔案

cat service.yaml | kubectl diff -f -

差異比較由檔案名稱或 stdin 指定的組態,在目前的線上組態與套用後的組態之間。

輸出始終為 YAML 格式。

KUBECTL_EXTERNAL_DIFF 環境變數可用於選擇您自己的差異比較指令。使用者也可以將外部指令與參數一起使用,範例:KUBECTL_EXTERNAL_DIFF="colordiff -N -u"

預設情況下,您路徑中可用的 "diff" 指令將使用 "-u"(統一差異)和 "-N"(將不存在的檔案視為空檔案)選項執行。

結束狀態:0 未找到差異。1 找到差異。>1 Kubectl 或 diff 失敗並出現錯誤。

注意:如果使用 KUBECTL_EXTERNAL_DIFF,則預期會遵循該慣例。

用法

$ kubectl diff -f FILENAME

旗標

名稱 縮寫 預設值 用法
field-manager kubectl-client-side-apply 用於追蹤欄位所有權的管理員名稱。
filename f [] 檔案名稱、目錄或 URL,用於包含要進行差異比較的組態
force-conflicts false 若為 true,伺服器端套用將強制針對衝突進行變更。
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector l
server-side false 若為 true,套用會在伺服器而非用戶端中執行。

edit (編輯)

編輯名為 'docker-registry' 的服務

kubectl edit svc/docker-registry

使用替代編輯器

KUBE_EDITOR="nano" kubectl edit svc/docker-registry

使用 v1 API 格式以 JSON 格式編輯工作 'myjob'

kubectl edit job.v1.batch/myjob -o json

以 YAML 格式編輯部署 'mydeployment',並將修改後的組態儲存在其註釋中

kubectl edit deployment/mydeployment -o yaml --save-config

從預設編輯器編輯資源。

edit 指令可讓您直接編輯任何可以透過命令列工具檢索的 API 資源。它將開啟由您的 KUBE_EDITOR 或 EDITOR 環境變數定義的編輯器,或回退到 Linux 的 'vi' 或 Windows 的 'notepad'。您可以編輯多個物件,但變更會一次套用一個。該指令接受檔案名稱以及命令列引數,但您指向的檔案必須是先前儲存的資源版本。

編輯是使用用於擷取資源的 API 版本完成的。若要使用特定 API 版本進行編輯,請完整限定資源、版本和群組。

預設格式為 YAML。若要以 JSON 格式編輯,請指定 "-o json"。

--windows-line-endings 旗標可用於強制使用 Windows 行尾,否則將使用您作業系統的預設值。

如果在更新時發生錯誤,將會在磁碟上建立一個暫存檔,其中包含您未套用的變更。更新資源時最常見的錯誤是另一個編輯器在伺服器上變更了資源。當這種情況發生時,您必須將您的變更套用至較新版本的資源,或更新您的暫存儲存副本以包含最新的資源版本。

用法

$ kubectl edit (RESOURCE/NAME | -f FILENAME)

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
field-manager kubectl-edit 用於追蹤欄位所有權的管理員名稱。
filename f [] 要用於編輯資源的檔案的檔案名稱、目錄或 URL
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
output-patch false 如果資源已編輯,則輸出修補程式。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate
如果為 true,則在使用綱要驗證輸入後再傳送它 false 預設為您平台的原生行尾。

kustomize (客製化)

建置目前的工作目錄

kubectl kustomize

建置一些共用組態目錄

kubectl kustomize /home/config/production

從 github 建置

kubectl kustomize https://github.com/kubernetes-sigs/kustomize.git/examples/helloWorld?ref=v1.0.6

使用 'kustomization.yaml' 檔案建置一組 KRM 資源。DIR 引數必須是包含 'kustomization.yaml' 的目錄的路徑,或具有路徑後綴的 git 儲存庫 URL,指定相對於儲存庫根目錄的路徑。如果省略 DIR,則假定為 '.'。

用法

$ kubectl kustomize DIR

旗標

名稱 縮寫 預設值 用法
as-current-user false 使用命令執行器的 uid 和 gid 在容器中執行函數
enable-alpha-plugins false 啟用 kustomize 外掛程式
enable-helm false 啟用 Helm chart inflator 產生器的使用。
enable-managedby-label false 啟用新增 app.kubernetes.io/managed-by
env (環境變數) e [] 函數要使用的一系列環境變數
helm-command helm helm 指令 (可執行檔的路徑)
load-restrictor LoadRestrictionsRootOnly 如果設定為 'LoadRestrictionsNone',本機 kustomization 可以從其根目錄外部載入檔案。但是,這會破壞 kustomization 的可重定位性。
mount [] 從檔案系統讀取的一系列儲存選項
network false 為宣告網路存取權的函數啟用網路存取
network-name bridge 要在其中執行容器的 docker 網路
output o 如果指定,將輸出寫入此路徑。
reorder legacy 在輸出之前重新排序資源。使用 'legacy' 套用舊版重新排序(命名空間優先,Webhook 最後等)。使用 'none' 抑制最終重新排序。

label (標籤)

使用標籤 'unhealthy' 和值 'true' 更新 Pod 'foo'

kubectl label pods foo unhealthy=true

使用標籤 'status' 和值 'unhealthy' 更新 Pod 'foo',覆寫任何現有值

kubectl label --overwrite pods foo status=unhealthy

更新命名空間中的所有 Pod

kubectl label pods --all status=unhealthy

在 "pod.json" 中依類型和名稱識別的 Pod 更新

kubectl label -f pod.json status=unhealthy

只有在資源與版本 1 相比未變更時,才更新 Pod 'foo'

kubectl label pods foo status=unhealthy --resource-version=1

移除名為 'bar' 的標籤(如果存在)來更新 Pod 'foo' # 不需要 --overwrite 旗標

kubectl label pods foo bar-

更新資源上的標籤。

用法

$ kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源,包括未初始化的資源
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 若為 true,請檢查所有命名空間中的指定動作。
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-label 用於追蹤欄位所有權的管理員名稱。
以自訂欄位列出資源資訊 以 ps 輸出格式一起列出所有複製控制器和服務
filename f [] 檔案名稱、目錄或 URL,用於識別要更新標籤的資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
list (列表) false 若為 true,顯示給定資源的標籤。
local false 若為 true,標籤將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite false 若為 true,允許覆寫標籤,否則拒絕覆寫現有標籤的標籤更新。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
resource-version 若為非空值,只有在這是物件的目前資源版本時,標籤更新才會成功。僅在指定單一資源時有效。
selector (選擇器) selector 要篩選的選擇器(標籤查詢),不包括未初始化的資源,支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2)。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

patch (修補)

使用策略性合併修補程式部分更新節點,以 JSON 格式指定修補程式

kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'

使用策略性合併修補程式部分更新節點,以 YAML 格式指定修補程式

kubectl patch node k8s-node-1 -p $'spec:\n unschedulable: true'

使用策略性合併修補程式部分更新在 "node.json" 中依類型和名稱指定的節點

kubectl patch -f node.json -p '{"spec":{"unschedulable":true}}'

更新容器的映像;spec.containers[*].name 是必要的,因為它是合併鍵

kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'

使用具有位置陣列的 JSON 修補程式更新容器的映像

kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'

使用策略性合併修補程式、JSON 合併修補程式或 JSON 修補程式更新資源的欄位。

接受 JSON 和 YAML 格式。

用法

$ kubectl patch (-f FILENAME | TYPE NAME) [-p PATCH|--patch-file FILE]

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-patch 用於追蹤欄位所有權的管理員名稱。
filename f [] 檔案名稱、目錄或 URL,用於識別要更新的資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
local false 若為 true,修補程式將對檔案的內容進行操作,而不是伺服器端資源。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
patch (修補) p 要套用至資源 JSON 檔案的修補程式。
patch-file 包含要套用至資源的修補程式的檔案。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
為資料夾 bar 中的每個檔案建立名為 my-secret 的新密鑰 strategic 提供的修補程式類型;[json merge strategic] 其中之一

replace (取代)

使用 pod.json 中的資料取代 Pod

kubectl replace -f ./pod.json

根據傳遞到 stdin 的 JSON 取代 Pod

cat pod.json | kubectl replace -f -

將單一容器 Pod 的映像版本(標籤)更新為 v4

kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -

強制取代,刪除然後重新建立資源

kubectl replace --force -f ./pod.json

依檔案名稱或 stdin 取代資源。

JSON 和 YAML 格式皆被接受。如果取代現有資源,則必須提供完整的資源規格。這可以透過以下方式取得

$ kubectl get TYPE NAME -o yaml

用法

$ kubectl replace -f FILENAME

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
watch w 在列出/取得請求的物件後,監看變更。如果未提供物件名稱,則排除未初始化的物件。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-replace 用於追蹤欄位所有權的管理員名稱。
filename f [] 啟動 hazelcast Pod 並在容器中設定標籤 "app=hazelcast" 和 "env=prod"
Dry run;列印對應的 API 物件而不建立它們 false 啟動 nginx Pod,但使用從 JSON 剖析的部分值集覆寫規格
啟動 busybox Pod 並使其保持在前台,如果它退出則不要重新啟動它 -1 使用預設命令啟動 nginx Pod,但對該命令使用自訂引數 (arg1 .. argN)
kustomize (客製化) kustomize attach
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
raw 要 PUT 到伺服器的原始 URI。使用 kubeconfig 檔案指定的傳輸方式。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
save-config false 如果為 true,則目前物件的組態將儲存在其註解中。否則,註解將保持不變。當您想要在未來對此物件執行 kubectl apply 時,此旗標非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
labels 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 leave-stdin-open
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate
wait (等待) false overrides

rollout (滾動更新)

回滾到先前的部署

kubectl rollout undo deployment/abc

檢查 DaemonSet 的 rollout 狀態

kubectl rollout status daemonset/foo

管理資源的 rollout。

有效的資源類型包括

用法

$ kubectl rollout SUBCOMMAND


history (歷史紀錄)

檢視部署的 rollout 歷史記錄

kubectl rollout history deployment/abc

檢視 DaemonSet 修訂版本 3 的詳細資訊

kubectl rollout history daemonset/abc --revision=3

檢視先前的 rollout 修訂版本和組態。

用法

$ kubectl rollout history (TYPE NAME | TYPE/NAME) [flags]

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
revision 0 查看指定修訂版本的詳細資訊,包括 podTemplate
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

pause (暫停)

將 nginx 部署標記為已暫停 # 部署的任何目前狀態將繼續其功能;新的更新 # 在部署暫停期間將不會生效

kubectl rollout pause deployment/nginx

將提供的資源標記為已暫停。

暫停的資源將不會由控制器協調。使用 "kubectl rollout resume" 恢復暫停的資源。目前只有部署支援暫停。

用法

$ kubectl rollout pause RESOURCE

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
field-manager kubectl-rollout 用於追蹤欄位所有權的管理員名稱。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

restart (重新啟動)

重新啟動部署

kubectl rollout restart deployment/nginx

重新啟動 Daemon Set

kubectl rollout restart daemonset/abc

重新啟動資源。

資源 rollout 將會重新啟動。

用法

$ kubectl rollout restart RESOURCE

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
field-manager kubectl-rollout 用於追蹤欄位所有權的管理員名稱。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

resume (繼續)

恢復已暫停的部署

kubectl rollout resume deployment/nginx

恢復暫停的資源。

暫停的資源將不會由控制器協調。透過恢復資源,我們允許它再次被協調。目前只有部署支援恢復。

用法

$ kubectl rollout resume RESOURCE

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
field-manager kubectl-rollout 用於追蹤欄位所有權的管理員名稱。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

status (狀態)

監看部署的 rollout 狀態

kubectl rollout status deployment/nginx

顯示 rollout 的狀態。

預設情況下,'rollout status' 將監看最新 rollout 的狀態,直到完成為止。如果您不想等待 rollout 完成,則可以使用 --watch=false。請注意,如果在此期間開始新的 rollout,則 'rollout status' 將繼續監看最新的修訂版本。如果您想釘選到特定的修訂版本,並且如果它被另一個修訂版本覆蓋則中止,請使用 --revision=N,其中 N 是您需要監看的修訂版本。

用法

$ kubectl rollout status (TYPE NAME | TYPE/NAME) [flags]

旗標

名稱 縮寫 預設值 用法
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
revision 0 釘選到特定修訂版本以顯示其狀態。預設為 0(最後一個修訂版本)。
labels 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 等待結束監看的時間長度,零表示永不結束。任何其他值都應包含相應的時間單位(例如 1 秒、2 分鐘、3 小時)。
no-headers 當使用預設或自訂欄位輸出格式時,請勿列印標頭(預設為列印標頭)。 true 監看 rollout 的狀態,直到完成為止。

undo (還原)

回滾到先前的部署

kubectl rollout undo deployment/abc

回滾到 DaemonSet 修訂版本 3

kubectl rollout undo daemonset/abc --to-revision=3

使用 dry-run 回滾到先前的部署

kubectl rollout undo --dry-run=server deployment/abc

回滾到先前的 rollout。

用法

$ kubectl rollout undo (TYPE NAME | TYPE/NAME) [flags]

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
to-revision 0 要回滾到的修訂版本。預設為 0(最後一個修訂版本)。

scale (擴展)

將名為 'foo' 的副本集擴展為 3 個

kubectl scale --replicas=3 rs/foo

將在 "foo.yaml" 中依類型和名稱指定的資源擴展為 3 個

kubectl scale --replicas=3 -f foo.yaml

如果名為 mysql 的部署目前的規模為 2,則將 mysql 擴展為 3 個

kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

擴展多個複製控制器

kubectl scale --replicas=5 rc/foo rc/bar rc/baz

將名為 'web' 的 StatefulSet 擴展為 3 個

kubectl scale --replicas=3 statefulset/web

為部署、副本集、複製控制器或 StatefulSet 設定新的規模。

Scale 也允許使用者指定一個或多個擴展動作的先決條件。

如果指定了 --current-replicas 或 --resource-version,則會在嘗試擴展之前驗證它,並且保證在將擴展傳送到伺服器時,先決條件成立。

用法

$ kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
current-replicas -1 目前規模的先決條件。要求資源的目前規模與此值相符才能擴展。-1(預設值)表示沒有條件。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
filename f [] 檔案名稱、目錄或 URL,用於識別要設定新規模的資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
使用指定的名稱建立 Deployment。 0 新的所需副本數量。必要參數。
resource-version 資源版本的先決條件。要求目前的資源版本與此值相符才能擴展。
selector (選擇器) selector l
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
labels 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 在放棄擴展操作之前等待的時間長度,零表示不等待。任何其他值都應包含相應的時間單位(例如 1 秒、2 分鐘、3 小時)。

set (設定)

設定應用程式資源。

這些指令可協助您變更現有的應用程式資源。

用法

$ kubectl set SUBCOMMAND


env (環境變數)

使用新的環境變數更新部署 'registry'

kubectl set env deployment/registry STORAGE_DIR=/local

列出在部署 'sample-build' 上定義的環境變數

kubectl set env deployment/sample-build --list

列出在所有 Pod 上定義的環境變數

kubectl set env pods --all --list

以 YAML 格式輸出修改後的部署,並且不會變更伺服器上的物件

kubectl set env deployment/sample-build STORAGE_DIR=/data -o yaml

更新專案中所有複製控制器的所有容器,使其具有 ENV=prod

kubectl set env rc --all ENV=prod

從 Secret 匯入環境變數

kubectl set env --from=secret/mysecret deployment/myapp

從具有前綴的 ConfigMap 匯入環境變數

kubectl set env --from=configmap/myconfigmap --prefix=MYSQL_ deployment/myapp

從 ConfigMap 匯入特定金鑰

kubectl set env --keys=my-example-key --from=configmap/myconfigmap deployment/myapp

從所有部署組態中的容器 'c1' 移除環境變數 ENV

kubectl set env deployments --all --containers="c1" ENV-

從磁碟上的部署定義中移除環境變數 ENV,並 # 更新伺服器上的部署組態

kubectl set env -f deploy.json ENV-

將某些本機 Shell 環境設定到伺服器上的部署組態中

env | grep RAILS_ | kubectl set env -e - deployment/registry

更新 Pod 範本上的環境變數。

列出一個或多個 Pod、Pod 範本中的環境變數定義。在一個或多個 Pod 範本(在複製控制器或部署組態中)中新增、更新或移除容器環境變數定義。檢視或修改指定 Pod 或 Pod 範本中,或僅限於符合萬用字元的容器上的環境變數定義。

如果傳遞了 "--env -",則可以使用標準 env 語法從 STDIN 讀取環境變數。

requests

pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、statefulset (sts)、cronjob (cj)、replicaset (rs)

用法

$ kubectl set env RESOURCE/NAME KEY_1=VAL_1 ... KEY_N=VAL_N

旗標

名稱 縮寫 預設值 用法
all false 若為 true,則選取指定資源類型命名空間中的所有資源
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
containers c * 要變更的選取 Pod 範本中容器的名稱 - 可以使用萬用字元
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
env (環境變數) e [] 指定要設定到每個容器中的環境變數的鍵值對。
field-manager kubectl-set 用於追蹤欄位所有權的管理員名稱。
filename f [] 檔案名稱、目錄或 URL,用於檔案要更新 env 的資源
格式為 host/path=service:port[,tls=secretname] 的規則。包含前導字元 '*' 的路徑被視為 pathType=Prefix。tls 參數是選用的。 要從中注入環境變數的資源名稱
keys [] 要從指定資源匯入的金鑰的逗號分隔清單
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
list (列表) false 若為 true,則以標準格式顯示環境變數和任何變更。當我們有 kubectl view env 時,此旗標將會移除。
local false 若為 true,set env 將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite true 若為 true,允許覆寫環境變數,否則拒絕覆寫現有環境變數的更新。
prefix 要附加到變數名稱的前綴
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
resolve false 若為 true,則在列出變數時顯示 Secret 或 ConfigMap 參考
selector (選擇器) selector 要篩選的選擇器(標籤查詢)
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

image (映像檔)

將部署的 nginx 容器映像設定為 'nginx:1.9.1',並將其 busybox 容器映像設定為 'busybox'

kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1

將所有部署和 rc 的 nginx 容器的映像更新為 'nginx:1.9.1'

kubectl set image deployments,rc nginx=nginx:1.9.1 --all

將 DaemonSet abc 的所有容器的映像更新為 'nginx:1.9.1'

kubectl set image daemonset abc *=nginx:1.9.1

從本機檔案更新 nginx 容器映像後,列印結果(YAML 格式),而無需連線到伺服器

kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml

更新資源的現有容器映像。

requests

pod (po)、replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、statefulset (sts)、cronjob (cj)、replicaset (rs)

用法

$ kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源,包括未初始化的資源
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-set 用於追蹤欄位所有權的管理員名稱。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
local false 若為 true,set image 將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector 要篩選的選擇器(標籤查詢),不包括未初始化的資源,支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2)
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

resources (資源)

將部署 nginx 容器的 CPU 限制設定為 "200m",記憶體設定為 "512Mi"

kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi

設定 nginx 中所有容器的資源請求和限制

kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi

移除 nginx 中容器的資源請求

kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0

從本機更新 nginx 容器限制後,列印結果(YAML 格式),而無需連線到伺服器

kubectl set resources -f path/to/file.yaml --limits=cpu=200m,memory=512Mi --local -o yaml

為任何定義 Pod 範本的資源指定運算資源需求(CPU、記憶體)。如果 Pod 成功排程,則保證請求的資源量,但可能會爆發到其指定的限制。

對於每個運算資源,如果指定了限制但省略了請求,則請求將預設為限制。

可能的資源包括(不區分大小寫):使用 "kubectl api-resources" 以取得完整支援資源清單。

用法

$ kubectl set resources (-f FILENAME | TYPE NAME) ([--limits=LIMITS & --requests=REQUESTS]

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源,包括未初始化的資源
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
containers c * 要變更的選取 Pod 範本中容器的名稱,預設選取所有容器 - 可以使用萬用字元
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-set 用於追蹤欄位所有權的管理員名稱。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
command 給予資源正常終止的時間段(秒)。如果為負數則忽略。設定為 1 以立即關閉。僅當 --force 為 true(強制刪除)時才能設定為 0。
local false 若為 true,set resources 將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
grace-period 給予資源正常終止的時間段(秒)。如果為負數則忽略。設定為 1 以立即關閉。僅當 --force 為 true(強制刪除)時才能設定為 0。
selector (選擇器) selector 要篩選的選擇器(標籤查詢),不包括未初始化的資源,支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2)
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

selector (選擇器)

在建立部署/服務配對之前設定標籤和選擇器

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 deployment my-dep -o yaml --dry-run=client | kubectl label --local -f - environment=qa -o yaml | kubectl create -f -

在資源上設定選擇器。請注意,如果資源在調用 'set selector' 之前已有選擇器,則新的選擇器將會覆寫舊的選擇器。

選擇器必須以字母或數字開頭,並且可以包含字母、數字、連字號、點和底線,最多 63 個字元。如果指定了 --resource-version,則更新將使用此資源版本,否則將使用現有的資源版本。注意:目前選擇器只能在 Service 物件上設定。

用法

$ kubectl set selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-set 用於追蹤欄位所有權的管理員名稱。
filename f [] 識別資源。
local false 若為 true,註釋將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R true 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
resource-version 若為非空值,只有在這是物件的目前資源版本時,選擇器更新才會成功。僅在指定單一資源時有效。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

serviceaccount (服務帳戶)

將部署 nginx-deployment 的服務帳戶設定為 serviceaccount1

kubectl set serviceaccount deployment nginx-deployment serviceaccount1

從本機檔案更新服務帳戶後,列印結果(YAML 格式)的 nginx 部署,而無需連線到 API 伺服器

kubectl set sa -f nginx-deployment.yaml serviceaccount1 --local --dry-run=client -o yaml

更新 Pod 範本資源的服務帳戶。

可能的資源(不區分大小寫)可以是

replicationcontroller (rc)、deployment (deploy)、daemonset (ds)、job、replicaset (rs)、statefulset

用法

$ kubectl set serviceaccount (-f FILENAME | TYPE NAME) SERVICE_ACCOUNT

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源,包括未初始化的資源
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-set 用於追蹤欄位所有權的管理員名稱。
filename f [] 依類型和名稱列出一個或多個資源
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
local false 若為 true,set serviceaccount 將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
record false 在資源註解中記錄目前的 kubectl 命令。如果設定為 false,則不記錄命令。如果設定為 true,則記錄命令。如果未設定,則預設為僅在已存在註解值的情況下更新現有的註解值。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

subject (主體)

更新 serviceaccount1 的叢集角色繫結

kubectl set subject clusterrolebinding admin --serviceaccount=namespace:serviceaccount1

更新 user1、user2 和 group1 的角色繫結

kubectl set subject rolebinding admin --user=user1 --user=user2 --group=group1

從本機更新 rolebinding 主體後,列印結果(YAML 格式),而無需連線到伺服器

kubectl create rolebinding admin --role=admin --user=admin -o yaml --dry-run=client | kubectl set subject --local -f - --user=foo -o yaml

更新角色繫結或叢集角色繫結中的使用者、群組或服務帳戶。

用法

$ kubectl set subject (-f FILENAME | TYPE NAME) [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源,包括未初始化的資源
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-set 用於追蹤欄位所有權的管理員名稱。
filename f [] 檔案名稱、目錄或 URL,用於檔案要更新主體的資源
clusterrole [] 建立名為 "foo" 的角色,並指定 SubResource
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
local false 若為 true,set subject 將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector 要篩選的選擇器(標籤查詢),不包括未初始化的資源,支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2)
serviceaccount (服務帳戶) [] 要繫結到角色的服務帳戶
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

wait (等待)

等待 Pod "busybox1" 包含類型為 "Ready" 的狀態條件

kubectl wait --for=condition=Ready pod/busybox1

狀態條件的預設值為 true;您可以將其設定為 false

kubectl wait --for=condition=Ready=false pod/busybox1

在發出 "delete" 指令後,等待 Pod "busybox1" 被刪除,逾時時間為 60 秒

kubectl delete pod/busybox1
kubectl wait --for=delete pod/busybox1 --timeout=60s

實驗性功能:等待一個或多個資源上的特定條件。

此指令採用多個資源,並等待直到在每個給定資源的 Status 欄位中看到指定的條件。

或者,指令可以透過提供 "delete" 關鍵字作為 --for 旗標的值,來等待給定的一組資源被刪除。

當滿足指定的條件時,將會列印成功訊息到 stdout 中。您可以使用 -o 選項來變更輸出目的地。

用法

$ kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available]

旗標

名稱 縮寫 預設值 用法
all false 選取指定資源類型命名空間中的所有資源
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 以 JSON 輸出格式列出 "pod.yaml" 中指定的類型和名稱識別的 Pod
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
以自訂欄位列出資源資訊 以 ps 輸出格式一起列出所有複製控制器和服務
filename f [] 識別資源。
for 要等待的條件:[delete|condition=condition-name]。condition-name 的預設狀態值為 true,您可以使用 condition=condition-name=false 設定為 false
local false 若為 true,註釋將不會連線到 api-server,而是本機執行。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R true 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector l
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
labels 30 秒 放棄等待前的等待時間長度。零表示檢查一次且不等待,負數表示等待一週。

應用程式操作

本節包含用於檢查和偵錯應用程式的指令。


attach (附加)

從正在執行的 Pod mypod 取得輸出;使用 'kubectl.kubernetes.io/default-container' 註釋 # 以選取要附加的容器,否則將選擇 Pod 中的第一個容器

kubectl attach mypod

從 Pod mypod 的 ruby-container 取得輸出

kubectl attach mypod -c ruby-container

切換到原始終端機模式;將 stdin 傳送到 Pod mypod 中 ruby-container 內的 'bash' # 並將來自 'bash' 的 stdout/stderr 傳送回用戶端

kubectl attach mypod -c ruby-container -i -t

從名為 nginx 的副本集的第一個 Pod 取得輸出

kubectl attach rs/nginx

附加到已在現有容器內執行的程序。

用法

$ kubectl attach (POD | TYPE/NAME) -c CONTAINER

旗標

名稱 縮寫 預設值 用法
container c 容器名稱。如果省略,則使用 kubectl.kubernetes.io/default-container 註釋以選取要附加的容器,否則將選擇 Pod 中的第一個容器
expose 如果為 true,則為運行的容器建立服務 field-manager
用於取代資源。 force false 僅列印來自遠端連線的輸出
容器的映像檔提取策略。如果留空,則此值不會由用戶端指定,而是由伺服器預設設定 kustomize false 將 stdin 傳遞到容器
如果 Pod 在互動模式下或使用 stdin 啟動,則在第一次附加完成後保持 stdin 開啟。預設情況下,stdin 將在第一次附加完成後關閉。 limits false Stdin 為 TTY

auth (授權)

檢查授權

用法

$ kubectl auth


can-i (我可以)

檢查我是否可以在任何命名空間中建立 Pod

kubectl auth can-i create pods --all-namespaces

檢查我是否可以在目前命名空間中列出 deployments

kubectl auth can-i list deployments.apps

檢查我是否可以在目前命名空間中執行所有操作 ("*" 表示全部)

kubectl auth can-i '*' '*'

檢查我是否可以在命名空間 "foo" 中取得名為 "bar" 的 job

kubectl auth can-i list jobs.batch/bar -n foo

檢查我是否可以讀取 Pod 日誌

kubectl auth can-i get pods --subresource=log

檢查我是否可以存取 URL /logs/

kubectl auth can-i get /logs/

列出命名空間 "foo" 中所有允許的操作

kubectl auth can-i --list --namespace=foo

檢查是否允許某個操作。

VERB 是一個邏輯 Kubernetes API 動詞,例如 'get'、'list'、'watch'、'delete' 等。TYPE 是一個 Kubernetes 資源。將會解析捷徑和群組。NONRESOURCEURL 是以 "/" 開頭的部分 URL。NAME 是特定 Kubernetes 資源的名稱。

用法

$ kubectl auth can-i VERB [TYPE | TYPE/NAME | NONRESOURCEURL]

旗標

名稱 縮寫 預設值 用法
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 若為 true,請檢查所有命名空間中的指定動作。
list (列表) false 如果為 true,則列印所有允許的操作。
$ kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [旗標] false 如果為 true,則列印允許的操作,不包含標頭
用於取代資源。 force false 如果為 true,則抑制輸出,僅傳回結束代碼。
子資源 子資源,例如 pod/log 或 deployment/scale

reconcile (協調)

從檔案協調 RBAC 資源

kubectl auth reconcile -f my-rbac-rules.yaml

協調 RBAC role、role binding、cluster role 和 cluster role binding 物件的規則。

將建立遺失的物件,並在需要時為命名空間物件建立包含的命名空間。

現有的角色會更新為包含輸入物件中的權限,如果指定了 --remove-extra-permissions,則會移除額外的權限。

現有的繫結會更新為包含輸入物件中的主體,如果指定了 --remove-extra-subjects,則會移除額外的主體。

對於 RBAC 資源,這比 'apply' 更佳,以便完成規則和主體的語意感知合併。

用法

$ kubectl auth reconcile -f FILENAME

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
filename f [] 檔案名稱、目錄或 URL,用於識別要協調的資源的檔案。
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
remove-extra-permissions false 如果為 true,則移除新增至角色的額外權限
remove-extra-subjects false 如果為 true,則移除新增至 rolebindings 的額外主體
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

cp (複製)

!!!重要注意事項!!! # 需要容器 # 映像檔中存在 'tar' 二進位檔。如果 'tar' 不存在,'kubectl cp' 將會失敗。 # # 對於進階使用案例,例如符號連結、萬用字元展開或 # 檔案模式保留,請考慮使用 'kubectl exec'。 # 將本機檔案 /tmp/foo 複製到命名空間中遠端 Pod 的 /tmp/bar

tar cf - /tmp/foo | kubectl exec -i -n <some-namespace> <some-pod> -- tar xf - -C /tmp/bar

將遠端 Pod 的 /tmp/foo 複製到本機的 /tmp/bar

kubectl exec -n <some-namespace> <some-pod> -- tar cf - /tmp/foo | tar xf - -C /tmp/bar

將本機目錄 /tmp/foo_dir 複製到預設命名空間中遠端 Pod 的 /tmp/bar_dir

kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir

將本機檔案 /tmp/foo 複製到特定容器中遠端 Pod 的 /tmp/bar

kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>

將本機檔案 /tmp/foo 複製到命名空間中遠端 Pod 的 /tmp/bar

kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar

將遠端 Pod 的 /tmp/foo 複製到本機的 /tmp/bar

kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar

將檔案和目錄複製到容器和從容器複製。

用法

$ kubectl cp <file-spec-src> <file-spec-dest>

旗標

名稱 縮寫 預設值 用法
container c 容器名稱。如果省略,則使用 kubectl.kubernetes.io/default-container 註釋以選取要附加的容器,否則將選擇 Pod 中的第一個容器
no-preserve false 複製的檔案/目錄的所有權和權限將不會在容器中保留

describe (描述)

描述節點

kubectl describe nodes kubernetes-node-emt8.c.myproject.internal

描述 Pod

kubectl describe pods/nginx

描述 "pod.json" 中依類型和名稱識別的 Pod

kubectl describe -f pod.json

描述所有 Pod

kubectl describe pods

依標籤 name=myLabel 描述 Pod

kubectl describe po -l name=myLabel

描述由 'frontend' 複製控制器管理的所有 Pod (rc 建立的 Pod # 會在 Pod 名稱中取得 rc 名稱作為前置詞)

kubectl describe pods frontend

顯示特定資源或資源群組的詳細資訊。

列印所選資源的詳細描述,包括相關資源,例如事件或控制器。您可以依名稱選取單一物件、該類型的所有物件、提供名稱前置詞或標籤選取器。例如

$ kubectl describe TYPE NAME_PREFIX

將先檢查 TYPE 和 NAME_PREFIX 是否完全相符。如果沒有這類資源存在,它將輸出名稱以 NAME_PREFIX 為前置詞的每個資源的詳細資訊。

以 ps 輸出格式列出所有 Pod,並包含更多資訊(例如節點名稱)

用法

$ kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)

旗標

名稱 縮寫 預設值 用法
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 以 JSON 輸出格式列出 "pod.yaml" 中指定的類型和名稱識別的 Pod
從具有 kustomization.yaml 的目錄列出資源 - 例如 dir/kustomization.yaml 500 僅傳回指定 Pod 的 phase 值
filename f [] 檔案名稱、目錄或 URL,用於包含要描述的資源的檔案
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
selector (選擇器) selector l
show-events true 如果為 true,則顯示與描述的物件相關的事件。

exec (執行命令)

從 Pod mypod 執行 'date' 指令取得輸出,預設使用第一個容器

kubectl exec mypod -- date

從 Pod mypod 的 ruby-container 執行 'date' 指令取得輸出

kubectl exec mypod -c ruby-container -- date

切換到原始終端機模式;將 stdin 傳送到 Pod mypod 中 ruby-container 內的 'bash' # 並將來自 'bash' 的 stdout/stderr 傳送回用戶端

kubectl exec mypod -c ruby-container -i -t -- bash -il

列出 Pod mypod 第一個容器中 /usr 的內容,並依修改時間排序 # 如果您想要在 Pod 中執行的指令有任何共用的旗標 (例如 -i), # 您必須使用兩個破折號 (--) 來分隔指令的旗標/引數 # 另請注意,請勿以引號括住指令及其旗標/引數 # 除非這通常是您執行它的方式 (即,執行 ls -t /usr,而不是 "ls -t /usr")

kubectl exec mypod -i -t -- ls -t /usr

從 deployment mydeployment 的第一個 Pod 執行 'date' 指令取得輸出,預設使用第一個容器

kubectl exec deploy/mydeployment -- date

從 service myservice 的第一個 Pod 執行 'date' 指令取得輸出,預設使用第一個容器

kubectl exec svc/myservice -- date

在容器中執行指令。

用法

$ kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...]

旗標

名稱 縮寫 預設值 用法
container c 容器名稱。如果省略,則使用 kubectl.kubernetes.io/default-container 註釋以選取要附加的容器,否則將選擇 Pod 中的第一個容器
filename f [] 用於 exec 進入資源
expose 如果為 true,則為運行的容器建立服務 field-manager
用於取代資源。 force false 僅列印來自遠端連線的輸出
容器的映像檔提取策略。如果留空,則此值不會由用戶端指定,而是由伺服器預設設定 kustomize false 將 stdin 傳遞到容器
如果 Pod 在互動模式下或使用 stdin 啟動,則在第一次附加完成後保持 stdin 開啟。預設情況下,stdin 將在第一次附加完成後關閉。 limits false Stdin 為 TTY

logs (日誌)

從只有一個容器的 Pod nginx 傳回快照日誌

kubectl logs nginx

從有多個容器的 Pod nginx 傳回快照日誌

kubectl logs nginx --all-containers=true

從標籤 app=nginx 定義的 Pod 中所有容器傳回快照日誌

kubectl logs -l app=nginx --all-containers=true

從 Pod web-1 傳回先前終止的 ruby 容器日誌的快照

kubectl logs -p -c ruby web-1

開始串流 Pod web-1 中 ruby 容器的日誌

kubectl logs -f -c ruby web-1

開始串流標籤 app=nginx 定義的 Pod 中所有容器的日誌

kubectl logs -f -l app=nginx --all-containers=true

僅顯示 Pod nginx 中最新的 20 行輸出

kubectl logs --tail=20 nginx

顯示 Pod nginx 在過去一小時內寫入的所有日誌

kubectl logs --since=1h nginx

顯示具有過期伺服器憑證的 kubelet 的日誌

kubectl logs --insecure-skip-tls-verify-backend nginx

從名為 hello 的 job 的第一個容器傳回快照日誌

kubectl logs job/hello

從名為 nginx 的 deployment 的容器 nginx-1 傳回快照日誌

kubectl logs deployment/nginx -c nginx-1

列印 Pod 或指定資源中容器的日誌。如果 Pod 只有一個容器,則容器名稱為選用項目。

用法

$ kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER]

旗標

名稱 縮寫 預設值 用法
all-containers false 取得 Pod 中所有容器的日誌。
container c 列印此容器的日誌
follow f false 指定是否應串流日誌。
ignore-errors false 如果正在監看/追蹤 Pod 日誌,則允許發生的任何錯誤為非嚴重錯誤
insecure-skip-tls-verify-backend false 略過驗證從中要求日誌的 kubelet 身分。理論上,攻擊者可能會傳回無效的日誌內容。如果您的 kubelet 伺服器憑證已過期,您可能會想要使用此選項。
limit-bytes 0 要傳回的日誌最大位元組數。預設為無限制。
max-log-requests 5 指定在使用選取器時要同時追蹤的日誌最大數量。預設為 5。
expose 20 秒 field-manager
prefix false 在每個日誌行前面加上日誌來源 (Pod 名稱和容器名稱)
previous p false 如果為 true,則列印 Pod 中容器先前執行個體的日誌 (如果存在)。
selector (選擇器) selector 用於篩選的選取器 (標籤查詢)。
since 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 僅傳回比相對持續時間 (例如 5 秒、2 分鐘或 3 小時) 更新的日誌。預設為所有日誌。since-time/since 只能使用其中一個。
since-time 僅傳回特定日期 (RFC3339) 之後的日誌。預設為所有日誌。since-time/since 只能使用其中一個。
tail -1 要顯示的最新日誌檔案行數。預設為 -1 (如果沒有選取器),否則顯示所有日誌行,如果提供選取器,則預設為 10。
timestamps false 在日誌輸出中的每一行包含時間戳記

port-forward (端口轉發)

在本機連接埠 5000 和 6000 上接聽,將資料轉發到 Pod 中連接埠 5000 和 6000 以及從 Pod 轉發資料

kubectl port-forward pod/mypod 5000 6000

在本機連接埠 5000 和 6000 上接聽,將資料轉發到部署所選 Pod 中連接埠 5000 和 6000 以及從 Pod 轉發資料

kubectl port-forward deployment/mydeployment 5000 6000

在本機連接埠 8443 上接聽,轉發到服務所選 Pod 中名為 "https" 的服務連接埠的 targetPort

kubectl port-forward service/myservice 8443:https

在本機連接埠 8888 上接聽,轉發到 Pod 中的 5000

kubectl port-forward pod/mypod 8888:5000

在所有位址的連接埠 8888 上接聽,轉發到 Pod 中的 5000

kubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000

在 localhost 和選取的 IP 的連接埠 8888 上接聽,轉發到 Pod 中的 5000

kubectl port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000

在本機隨機連接埠上接聽,轉發到 Pod 中的 5000

kubectl port-forward pod/mypod :5000

將一或多個本機連接埠轉發到 Pod。

使用資源類型/名稱 (例如 deployment/mydeployment) 來選取 Pod。如果省略資源類型,則預設為 'pod'。

如果有多個 Pod 符合準則,將會自動選取一個 Pod。轉發工作階段會在選取的 Pod 終止時結束,且需要重新執行指令才能繼續轉發。

用法

$ kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]

旗標

名稱 縮寫 預設值 用法
address [localhost] 要接聽的位址 (逗號分隔)。僅接受 IP 位址或 localhost 作為值。當提供 localhost 時,kubectl 將嘗試繫結到 127.0.0.1 和 ::1,如果這兩個位址都無法繫結,則會失敗。
expose 如果為 true,則為運行的容器建立服務 field-manager

proxy (代理)

僅代理所有 Kubernetes API,不代理其他任何項目

kubectl proxy --api-prefix=/

僅代理部分 Kubernetes API 以及一些靜態檔案 # 您可以使用 'curl localhost:8001/api/v1/pods' 取得 Pod 資訊

kubectl proxy --www=/my/files --www-prefix=/static/ --api-prefix=/api/

在不同的根目錄代理整個 Kubernetes API # 您可以使用 'curl localhost:8001/custom/api/v1/pods' 取得 Pod 資訊

kubectl proxy --api-prefix=/custom/

在連接埠 8011 上執行 Kubernetes API 伺服器的 Proxy,從 ./local/www/ 提供靜態內容

kubectl proxy --port=8011 --www=./local/www/

在任意本機連接埠上執行 Kubernetes API 伺服器的 Proxy # 伺服器的選取連接埠將會輸出到 stdout

kubectl proxy --port=0

執行 Kubernetes API 伺服器的 Proxy,將 API 前置詞變更為 k8s-api # 這會使 Pod API 在 localhost:8001/k8s-api/v1/pods/ 上可用

kubectl proxy --api-prefix=/k8s-api

在 localhost 和 Kubernetes API 伺服器之間建立 Proxy 伺服器或應用程式層級閘道。它也允許透過指定的 HTTP 路徑提供靜態內容。所有傳入資料都會透過一個連接埠進入,並轉發到遠端 Kubernetes API 伺服器連接埠,但符合靜態內容路徑的路徑除外。

用法

$ kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix]

旗標

名稱 縮寫 預設值 用法
accept-hosts ^localhost$,^127.0.0.1$,^[::1]$ Proxy 應接受的主機的規則運算式。
accept-paths ^.* Proxy 應接受的路徑的規則運算式。
address 127.0.0.1 要在其上提供的 IP 位址。
api-prefix / 要在其下提供 Proxy API 的前置詞。
disable-filter false 如果為 true,則停用 Proxy 中的要求篩選。這很危險,且在使用可存取的連接埠時,可能會讓您容易受到 XSRF 攻擊。
keepalive 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 keepalive 指定作用中網路連線的 keep-alive 期間。設定為 0 以停用 keepalive。
建立名為 my-dep 的 Deployment,該 Deployment 運行具有 3 個副本的 nginx 映像檔 p 8001 要在其上執行 Proxy 的連接埠。設定為 0 以選取隨機連接埠。
reject-methods ^$ Proxy 應拒絕的 HTTP 方法的規則運算式 (範例 --reject-methods='POST,PUT,PATCH')。
reject-paths ^/api/./pods/./exec,^/api/./pods/./attach Proxy 應拒絕的路徑的規則運算式。即使此處指定的路徑被 --accept-paths 接受,仍會遭到拒絕。
unix-socket u 要在其上執行 Proxy 的 Unix Socket。
www 當使用預設或自訂欄位輸出格式時,請勿列印標頭(預設為列印標頭)。 也從指定目錄在指定前置詞下提供靜態檔案。
www-prefix P /static/ 如果指定靜態檔案目錄,則要在其下提供靜態檔案的前置詞。

top (頂端)

顯示資源 (CPU/記憶體) 使用量。

top 指令可讓您查看節點或 Pod 的資源耗用量。

此指令需要 Metrics Server 在伺服器上正確設定並運作。

用法

$ kubectl top


node (節點)

顯示所有節點的指標

kubectl top node

顯示指定節點的指標

kubectl top node NODE_NAME

顯示節點的資源 (CPU/記憶體) 使用量。

top-node 指令可讓您查看節點的資源耗用量。

用法

$ kubectl top node [NAME | -l label]

旗標

名稱 縮寫 預設值 用法
$ kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [旗標] false 如果存在,則列印不含標頭的輸出
selector (選擇器) selector l
如果請求的物件不存在,則命令將傳回結束代碼 0。 如果非空白,則使用指定的欄位排序節點清單。欄位可以是 'cpu' 或 'memory'。
use-protocol-buffers true 啟用使用 protocol-buffers 存取 Metrics API。

pod (Pod)

顯示預設命名空間中所有 Pod 的指標

kubectl top pod

顯示指定命名空間中所有 Pod 的指標

kubectl top pod --namespace=NAMESPACE

顯示指定 Pod 及其容器的指標

kubectl top pod POD_NAME --containers

顯示標籤 name=myLabel 定義的 Pod 的指標

kubectl top pod -l name=myLabel

顯示 Pod 的資源 (CPU/記憶體) 使用量。

'top pod' 指令可讓您查看 Pod 的資源耗用量。

由於指標管線延遲,自 Pod 建立後幾分鐘內可能無法使用。

用法

$ kubectl top pod [NAME | -l label]

旗標

名稱 縮寫 預設值 用法
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 以 JSON 輸出格式列出 "pod.yaml" 中指定的類型和名稱識別的 Pod
containers false 如果存在,則列印 Pod 中容器的使用量。
以自訂欄位列出資源資訊 以 ps 輸出格式一起列出所有複製控制器和服務
$ kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [旗標] false 如果存在,則列印不含標頭的輸出。
selector (選擇器) selector l
如果請求的物件不存在,則命令將傳回結束代碼 0。 如果非空白,則使用指定的欄位排序 Pod 清單。欄位可以是 'cpu' 或 'memory'。
use-protocol-buffers true 啟用使用 protocol-buffers 存取 Metrics API。

叢集管理


api-versions (API 版本)

列印支援的 API 版本

kubectl api-versions

以 "群組/版本" 的形式列印伺服器上支援的 API 版本。

用法

$ kubectl api-versions


certificate (憑證)

修改憑證資源。

用法

$ kubectl certificate SUBCOMMAND


approve (核准)

核准 CSR 'csr-sqgzp'

kubectl certificate approve csr-sqgzp

核准憑證簽署要求。

kubectl certificate approve 允許叢集管理員核准憑證簽署要求 (CSR)。此動作會告知憑證簽署控制器向要求者發出具有 CSR 中要求屬性的憑證。

安全注意事項:根據要求的屬性而定,發出的憑證可能會授與要求者存取叢集資源的權限,或以要求的身分驗證。在核准 CSR 之前,請確保您瞭解簽署的憑證可以執行的操作。

用法

$ kubectl certificate approve (-f FILENAME | NAME)

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
filename f [] 檔案名稱、目錄或 URL,用於識別要更新的資源
Dry run;列印對應的 API 物件而不建立它們 false 即使 CSR 已核准,仍更新 CSR。
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

deny (拒絕)

拒絕 CSR 'csr-sqgzp'

kubectl certificate deny csr-sqgzp

拒絕憑證簽署要求。

kubectl certificate deny 允許叢集管理員拒絕憑證簽署要求 (CSR)。此動作會告知憑證簽署控制器不要向要求者發出憑證。

用法

$ kubectl certificate deny (-f FILENAME | NAME)

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
filename f [] 檔案名稱、目錄或 URL,用於識別要更新的資源
Dry run;列印對應的 API 物件而不建立它們 false 即使 CSR 已拒絕,仍更新 CSR。
kustomize (客製化) kustomize 處理 kustomization 目錄。此旗標不能與 -f 或 -R 一起使用。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
recursive R false 遞迴處理 -f、--filename 中使用的目錄。當您想要管理在同一個目錄中組織的相關資訊清單時非常有用。
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

cluster-info (叢集資訊)

列印控制平面和叢集服務的位址

kubectl cluster-info

顯示控制平面和具有標籤 kubernetes.io/cluster-service=true 的服務的位址。若要進一步偵錯和診斷叢集問題,請使用 'kubectl cluster-info dump'。

用法

$ kubectl cluster-info


dump (傾印)

將目前的叢集狀態傾印到 stdout

kubectl cluster-info dump

將目前的叢集狀態傾印到 /path/to/cluster-state

kubectl cluster-info dump --output-directory=/path/to/cluster-state

將所有命名空間傾印到 stdout

kubectl cluster-info dump --all-namespaces

將一組命名空間傾印到 /path/to/cluster-state

kubectl cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state

傾印叢集資訊以適用於偵錯和診斷叢集問題。依預設,會將所有項目傾印到 stdout。您可以選擇性地使用 --output-directory 指定目錄。如果您指定目錄,Kubernetes 將在該目錄中建立一組檔案。依預設,僅傾印目前命名空間和 'kube-system' 命名空間中的項目,但您可以使用 --namespaces 旗標切換到不同的命名空間,或指定 --all-namespaces 以傾印所有命名空間。

此指令也會傾印叢集中所有 Pod 的日誌;這些日誌會根據命名空間和 Pod 名稱傾印到不同的目錄中。

用法

$ kubectl cluster-info dump

旗標

名稱 縮寫 預設值 用法
以 JSON 輸出格式列出 Deployment,在 "apps" API 群組的 "v1" 版本中 以 JSON 輸出格式列出單個 Pod false 如果為 true,則傾印所有命名空間。如果為 true,則會忽略 --namespaces。
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
namespaces [] 要傾印的命名空間的逗號分隔清單。
output o json 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
output-directory 要將檔案輸出至何處。如果為空白或 '-',則使用 stdout,否則會在該目錄中建立目錄階層
expose 20 秒 field-manager
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

cordon (封鎖)

將節點 "foo" 標記為不可排程

kubectl cordon foo

將節點標記為不可排程。

用法

$ kubectl cordon NODE

旗標

名稱 縮寫 預設值 用法
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
selector (選擇器) selector 要篩選的選擇器(標籤查詢)

drain (排空)

排空節點 "foo",即使節點上有不受複製控制器、副本集、job、daemon set 或 stateful set 管理的 Pod

kubectl drain foo --force

與上述相同,但如果有不受複製控制器、副本集、job、daemon set 或 stateful set 管理的 Pod,則中止,並使用 15 分鐘的寬限期

kubectl drain foo --grace-period=900

排空節點以準備維護。

指定的節點將標記為不可排程,以防止新的 Pod 抵達。如果 API 伺服器支援 https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/disruptions/ ,則 'drain' 會驅逐 Pod。否則,它將使用一般 DELETE 來刪除 Pod。'drain' 會驅逐或刪除所有 Pod,鏡像 Pod 除外 (鏡像 Pod 無法透過 API 伺服器刪除)。如果有 daemon set 管理的 Pod,則在沒有 --ignore-daemonsets 的情況下,drain 將不會繼續進行,且無論如何它都不會刪除任何 daemon set 管理的 Pod,因為這些 Pod 會立即由 daemon set 控制器取代,而 daemon set 控制器會忽略不可排程標記。如果有任何 Pod 既不是鏡像 Pod,也不是由複製控制器、副本集、daemon set、stateful set 或 job 管理,則除非您使用 --force,否則 drain 不會刪除任何 Pod。如果遺失一或多個 Pod 的管理資源,--force 也允許繼續刪除。

'drain' 會等待正常終止。在指令完成之前,您不應在機器上操作。

當您準備好將節點放回服務時,請使用 kubectl uncordon,這會使節點再次可排程。

https://kubernetes.dev.org.tw/images/docs/kubectl_drain.svg

用法

$ kubectl drain NODE

旗標

名稱 縮寫 預設值 用法
從具有 kustomization.yaml 的目錄列出資源 - 例如 dir/kustomization.yaml 500 僅傳回指定 Pod 的 phase 值
delete-emptydir-data false 即使有 Pod 使用 emptyDir (在本機資料排空節點時將會刪除),仍繼續。
delete-local-data false 即使有 Pod 使用 emptyDir (在本機資料排空節點時將會刪除),仍繼續。
disable-eviction false 強制 drain 使用 delete,即使支援驅逐也一樣。這會略過檢查 PodDisruptionBudgets,請謹慎使用。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
Dry run;列印對應的 API 物件而不建立它們 false 即使有 Pod 不受 ReplicationController、ReplicaSet、Job、DaemonSet 或 StatefulSet 管理,仍繼續。
啟動 busybox Pod 並使其保持在前台,如果它退出則不要重新啟動它 -1 給予每個 Pod 正常終止的秒數時間週期。如果為負數,則會使用 Pod 中指定的預設值。
ignore-daemonsets false 忽略 DaemonSet 管理的 Pod。
ignore-errors false 忽略群組中排空節點之間發生的錯誤。
pod-selector 用於篩選節點上 Pod 的標籤選取器
selector (選擇器) selector 要篩選的選擇器(標籤查詢)
skip-wait-for-delete-timeout 0 如果 Pod DeletionTimestamp 早於 N 秒,則略過等待 Pod。秒數必須大於 0 才能略過。
labels 以逗號分隔的標籤,以套用於 Pod。將覆寫先前的值。 放棄等待前的等待時間長度,零表示無限期

taint (污點)

使用具有金鑰 'dedicated' 和值 'special-user' 以及效果 'NoSchedule' 的污點更新節點 'foo' # 如果已存在具有該金鑰和效果的污點,則其值會依指定取代

kubectl taint nodes foo dedicated=special-user:NoSchedule

如果存在,則從節點 'foo' 移除具有金鑰 'dedicated' 和效果 'NoSchedule' 的污點

kubectl taint nodes foo dedicated:NoSchedule-

從節點 'foo' 移除所有具有金鑰 'dedicated' 的污點

kubectl taint nodes foo dedicated-

在具有標籤 mylabel=X 的節點上新增具有金鑰 'dedicated' 的污點

kubectl taint node -l myLabel=X  dedicated=foo:PreferNoSchedule

在節點 'foo' 上新增具有金鑰 'bar' 且沒有值的污點

kubectl taint nodes foo bar:NoSchedule

更新一或多個節點上的污點。

用法

$ kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N

旗標

名稱 縮寫 預設值 用法
all false 選取叢集中的所有節點
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
field-manager kubectl-taint 用於追蹤欄位所有權的管理員名稱。
output o 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite false 如果為 true,則允許覆寫污點,否則拒絕覆寫現有污點的污點更新。
selector (選擇器) selector l
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template
當 -o=go-template、-o=go-template-file 時要使用的範本字串或範本檔案路徑。範本格式為 golang 範本 [https://go.dev.org.tw/pkg/text/template/#pkg-overview] true validate

uncordon (解除封鎖)

將節點 "foo" 標記為可排程

kubectl uncordon foo

將節點標記為可排程。

用法

$ kubectl uncordon NODE

旗標

名稱 縮寫 預設值 用法
dry-run none 必須為 "none"、"server" 或 "client"。如果為 client 策略,則僅列印將要傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求,而不持久化資源。
selector (選擇器) selector 要篩選的選擇器(標籤查詢)

KUBECTL 設定與用法


alpha (Alpha)

這些指令對應於預設未在 Kubernetes 叢集中啟用的 Alpha 功能。

用法

$ kubectl alpha


api-resources (API 資源)

列印支援的 API 資源

kubectl api-resources

列印支援的 API 資源,包含更多資訊

kubectl api-resources -o wide

列印依欄排序的支援 API 資源

kubectl api-resources --sort-by=name

列印支援的命名空間資源

kubectl api-resources --namespaced=true

列印支援的非命名空間資源

kubectl api-resources --namespaced=false

列印具有特定 APIGroup 的支援 API 資源

kubectl api-resources --api-group=extensions

列印伺服器上支援的 API 資源。

用法

$ kubectl api-resources

旗標

名稱 縮寫 預設值 用法
api-group 限制為指定 API 群組中的資源。
cached false 如果可用,則使用快取資源清單。
namespaced true 如果為 false,則會傳回非命名空間資源,否則預設傳回命名空間資源。
$ kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [旗標] false all-namespaces
output o 輸出格式。其中之一:wide|name。
如果請求的物件不存在,則命令將傳回結束代碼 0。 如果非空白,則使用指定的欄位排序資源清單。欄位可以是 'name' 或 'kind'。
verbs [] 限制為支援指定動詞的資源。

completion (自動完成)

在 macOS 上使用 Homebrew 安裝 bash 補全 ## 如果執行 macOS 隨附的 Bash 3.2

brew install bash-completion

或者,如果執行 Bash 4.1+

brew install bash-completion@2

如果 kubectl 是透過 Homebrew 安裝的,這應該會立即開始運作 ## 如果您是透過其他方式安裝的,您可能需要將補全新增至您的補全目錄

kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl

在 Linux 上安裝 bash 補全 ## 如果 Linux 上未安裝 bash-completion,請透過您的發行版本的套件管理員 ## 安裝 'bash-completion' 套件。 ## 將 bash 的 kubectl 補全程式碼載入到目前的 Shell 中

source <(kubectl completion bash)

將 bash 補全程式碼寫入檔案,並從 .bash_profile 取得來源

kubectl completion bash > ~/.kube/completion.bash.inc
printf "

Kubectl Shell 補全

source '$HOME/.kube/completion.bash.inc'
" >> $HOME/.bash_profile
source $HOME/.bash_profile

將 zsh[1] 的 kubectl 補全程式碼載入到目前的 Shell 中

source <(kubectl completion zsh)

設定 zsh[1] 的 kubectl 補全程式碼,以在啟動時自動載入

kubectl completion zsh > "${fpath[1]}/_kubectl"

輸出指定 Shell (bash 或 zsh) 的 Shell 補全程式碼。必須評估 Shell 程式碼,才能提供 kubectl 指令的互動式補全。這可以透過從 .bash_profile 取得來源來完成。

如需如何執行此操作的詳細指示,請參閱此處

適用於 macOS:https://kubernetes.dev.org.tw/docs/tasks/tools/install-kubectl-macos/#enable-shell-autocompletion

適用於 Linux:https://kubernetes.dev.org.tw/docs/tasks/tools/install-kubectl-linux/#enable-shell-autocompletion

適用於 Windows:https://kubernetes.dev.org.tw/docs/tasks/tools/install-kubectl-windows/#enable-shell-autocompletion

zsh 使用者注意事項:[1] zsh 補全僅在 zsh >= 5.2 版本中受到支援。

用法

$ kubectl completion SHELL


config (組態)

使用子指令 (例如 "kubectl config set current-context my-context") 修改 kubeconfig 檔案

載入順序遵循下列規則

  1. 如果設定了 --kubeconfig 旗標,則僅載入該檔案。旗標只能設定一次,且不會進行合併。
  2. 如果設定了 $KUBECONFIG 環境變數,則會將其用作路徑清單 (您系統的正常路徑分隔規則)。這些路徑會合併。當值被修改時,它會在定義節的檔案中修改。當值被建立時,它會在第一個存在的檔案中建立。如果鏈結中沒有檔案存在,則它會在清單中建立最後一個檔案。
  3. 否則,會使用 ${HOME}/.kube/config,且不會進行合併。

用法

$ kubectl config SUBCOMMAND


current-context (目前上下文)

顯示 current-context

kubectl config current-context

顯示 current-context。

用法

$ kubectl config current-context


delete-cluster (刪除叢集)

刪除 minikube 叢集

kubectl config delete-cluster minikube

從 kubeconfig 刪除指定的叢集。

用法

$ kubectl config delete-cluster NAME


delete-context (刪除上下文)

刪除 minikube 叢集的 context

kubectl config delete-context minikube

從 kubeconfig 刪除指定的 context。

用法

$ kubectl config delete-context NAME


delete-user (刪除使用者)

刪除 minikube 使用者

kubectl config delete-user minikube

從 kubeconfig 刪除指定的使用者。

用法

$ kubectl config delete-user NAME


get-clusters (取得叢集)

列出 kubectl 知道的叢集

kubectl config get-clusters

顯示 kubeconfig 中定義的叢集。

用法

$ kubectl config get-clusters


get-contexts (取得上下文)

列出 kubeconfig 檔案中的所有 context

kubectl config get-contexts

描述 kubeconfig 檔案中的一個 context

kubectl config get-contexts my-context

從 kubeconfig 檔案顯示一個或多個 context。

用法

$ kubectl config get-contexts [(-o|--output=)name)]

旗標

名稱 縮寫 預設值 用法
$ kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [旗標] false all-namespaces
output o 輸出格式。其中之一:name

get-users (取得使用者)

列出 kubectl 知道的使用者

kubectl config get-users

顯示 kubeconfig 中定義的使用者。

用法

$ kubectl config get-users


rename-context (重新命名上下文)

在您的 kubeconfig 檔案中將 context 'old-name' 重新命名為 'new-name'

kubectl config rename-context old-name new-name

從 kubeconfig 檔案重新命名 context。

CONTEXT_NAME 是您想要變更的 context 名稱。

NEW_NAME 是您想要設定的新名稱。

注意:如果重新命名的 context 是 'current-context',則此欄位也會更新。

用法

$ kubectl config rename-context CONTEXT_NAME NEW_NAME


set (設定)

在 my-cluster 叢集上將伺服器欄位設定為 https://1.2.3.4

kubectl config set clusters.my-cluster.server https://1.2.3.4

在 my-cluster 叢集上設定 certificate-authority-data 欄位

kubectl config set clusters.my-cluster.certificate-authority-data $(echo "cert_data_here" | base64 -i -)

在 my-context context 中將叢集欄位設定為 my-cluster

kubectl config set contexts.my-context.cluster my-cluster

使用 --set-raw-bytes 選項在 cluster-admin 使用者中設定 client-key-data 欄位

kubectl config set users.cluster-admin.client-key-data cert_data_here --set-raw-bytes=true

在 kubeconfig 檔案中設定個別值。

PROPERTY_NAME 是以點分隔的名稱,其中每個權杖代表屬性名稱或對應金鑰。對應金鑰可能不包含點。

PROPERTY_VALUE 是您想要設定的新值。除非使用 --set-raw-bytes 旗標,否則二進位欄位 (例如 'certificate-authority-data') 預期為 base64 編碼字串。

指定已存在的屬性名稱會將新欄位合併到現有值之上。

用法

$ kubectl config set PROPERTY_NAME PROPERTY_VALUE

旗標

名稱 縮寫 預設值 用法
set-raw-bytes false 當寫入 []byte PROPERTY_VALUE 時,直接寫入指定的字串,而不進行 base64 解碼。

set-cluster (設定叢集)

僅在 e2e 叢集項目上設定伺服器欄位,而不觸及其他值

kubectl config set-cluster e2e --server=https://1.2.3.4

內嵌 e2e 叢集項目的憑證授權單位資料

kubectl config set-cluster e2e --embed-certs --certificate-authority=~/.kube/e2e/kubernetes.ca.crt

停用 dev 叢集項目的憑證檢查

kubectl config set-cluster e2e --insecure-skip-tls-verify=true

設定自訂 TLS 伺服器名稱,以用於 e2e 叢集項目的驗證

kubectl config set-cluster e2e --tls-server-name=my-cluster-name

在 kubeconfig 中設定叢集項目。

指定已存在的名稱會將這些欄位的新欄位合併到現有值之上。

用法

$ kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certificate/authority] [--insecure-skip-tls-verify=true] [--tls-server-name=example.com]

旗標

名稱 縮寫 預設值 用法
embed-certs false kubeconfig 中叢集項目的 embed-certs

set-context (設定上下文)

僅在 gce context 項目上設定使用者欄位,而不觸及其他值

kubectl config set-context gce --user=cluster-admin

在 kubeconfig 中設定 context 項目。

指定已存在的名稱會將這些欄位的新欄位合併到現有值之上。

用法

$ kubectl config set-context [NAME | --current] [--cluster=cluster_nickname] [--user=user_nickname] [--namespace=namespace]

旗標

名稱 縮寫 預設值 用法
current false 修改目前的 context

set-credentials (設定憑證)

僅在 "cluster-admin" # 項目上設定 "client-key" 欄位,而不觸及其他值

kubectl config set-credentials cluster-admin --client-key=~/.kube/admin.key

為 "cluster-admin" 項目設定基本驗證

kubectl config set-credentials cluster-admin --username=admin --password=uXFGweU9l35qcif

在 "cluster-admin" 項目中內嵌用戶端憑證資料

kubectl config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true

為 "cluster-admin" 項目啟用 Google Compute Platform 驗證提供者

kubectl config set-credentials cluster-admin --auth-provider=gcp

為 "cluster-admin" 項目啟用 OpenID Connect 驗證提供者,包含額外引數

kubectl config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-id=foo --auth-provider-arg=client-secret=bar

移除 "cluster-admin" 項目的 OpenID Connect 驗證提供者的 "client-secret" 設定值

kubectl config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-secret-

為 "cluster-admin" 項目啟用新的 exec 驗證外掛程式

kubectl config set-credentials cluster-admin --exec-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1

為 "cluster-admin" 項目定義新的 exec 驗證外掛程式引數

kubectl config set-credentials cluster-admin --exec-arg=arg1 --exec-arg=arg2

為 "cluster-admin" 項目建立或更新 exec 驗證外掛程式環境變數

kubectl config set-credentials cluster-admin --exec-env=key1=val1 --exec-env=key2=val2

移除 "cluster-admin" 項目的 exec 驗證外掛程式環境變數

kubectl config set-credentials cluster-admin --exec-env=var-to-remove-

在 kubeconfig 中設定使用者項目。

指定已存在的名稱會將這些欄位的新欄位合併到現有值之上。

用戶端憑證旗標:--client-certificate=certfile --client-key=keyfile

持有者權杖旗標:--token=bearer_token

基本驗證旗標:--username=basic_user --password=basic_password

持有者權杖和基本驗證互斥。

用法

$ kubectl config set-credentials NAME [--client-certificate=path/to/certfile] [--client-key=path/to/keyfile] [--token=bearer_token] [--username=basic_user] [--password=basic_password] [--auth-provider=provider_name] [--auth-provider-arg=key=value] [--exec-command=exec_command] [--exec-api-version=exec_api_version] [--exec-arg=arg] [--exec-env=key=value]

旗標

名稱 縮寫 預設值 用法
auth-provider kubeconfig 中使用者項目的驗證提供者
auth-provider-arg [] 驗證提供者的 'key=value' 引數
embed-certs false 內嵌 kubeconfig 中使用者項目的用戶端憑證/金鑰
exec-api-version kubeconfig 中使用者項目的 exec 認證外掛程式的 API 版本
exec-arg [] kubeconfig 中使用者項目的 exec 認證外掛程式指令的新引數
exec-command kubeconfig 中使用者項目的 exec 認證外掛程式指令
exec-env [] exec 認證外掛程式的 'key=value' 環境值

unset (取消設定)

取消設定 current-context

kubectl config unset current-context

取消設定 foo context 中的命名空間

kubectl config unset contexts.foo.namespace

取消設定 kubeconfig 檔案中的個別值。

PROPERTY_NAME 是以點分隔的名稱,其中每個權杖代表屬性名稱或對應金鑰。對應金鑰可能不包含點。

用法

$ kubectl config unset PROPERTY_NAME


use-context (使用上下文)

使用 minikube 叢集的 context

kubectl config use-context minikube

在 kubeconfig 檔案中設定 current-context。

用法

$ kubectl config use-context CONTEXT_NAME


view (檢視)

顯示合併的 kubeconfig 設定

kubectl config view

顯示合併的 kubeconfig 設定和原始憑證資料

kubectl config view --raw

取得 e2e 使用者的密碼

kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'

顯示合併的 kubeconfig 設定或指定的 kubeconfig 檔案。

您可以使用 --output jsonpath={...},透過 jsonpath 運算式擷取特定值。

用法

$ kubectl config view

旗標

名稱 縮寫 預設值 用法
allow-missing-template-keys true 如果為 true,則在範本中缺少欄位或地圖鍵時,忽略範本中的任何錯誤。僅適用於 golang 和 jsonpath 輸出格式。
flatten false 將產生的 kubeconfig 檔案扁平化為獨立的輸出 (適用於建立可攜式 kubeconfig 檔案)
merge true 合併 kubeconfig 檔案的完整階層
minify false 從輸出中移除 current-context 未使用的所有資訊
output o yaml 輸出格式。選項之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
raw false 顯示原始位元組資料
要篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2) false show-managed-fields
如果為 true,則在以 JSON 或 YAML 格式列印物件時保留 managedFields。 template

explain (說明)

取得資源及其欄位的說明文件

kubectl explain pods

取得資源特定欄位的說明文件

kubectl explain pods.spec.containers

列出支援資源的欄位。

此指令描述與每個支援的 API 資源相關聯的欄位。欄位透過簡單的 JSONPath 識別碼識別

<type>.<fieldName>[.<fieldName>]

加上 --recursive 旗標以一次顯示所有欄位,不含描述。每個欄位的資訊會以 OpenAPI 格式從伺服器擷取。

以 ps 輸出格式列出所有 Pod,並包含更多資訊(例如節點名稱)

用法

$ kubectl explain RESOURCE

旗標

名稱 縮寫 預設值 用法
api-version 取得特定 API 版本 (API 群組/版本) 的不同說明
recursive false 列印欄位的欄位 (目前僅限 1 層深度)

options (選項)

列印所有指令繼承的旗標

kubectl options

列印所有指令繼承的旗標清單

用法

$ kubectl options


plugin (外掛程式)

提供與外掛程式互動的工具。

外掛程式提供擴充功能,這些功能並非主要命令列發行版本的一部分。請參閱文件和範例,以取得更多關於如何編寫您自己的外掛程式的資訊。

探索和安裝外掛程式最簡單的方式是透過 Kubernetes 子專案 krew。若要安裝 krew,請造訪 https://krew.sigs.k8s.io/docs/user-guide/setup/install/

用法

$ kubectl plugin [flags]


list (列表)

列出使用者 PATH 中所有可用的外掛程式檔案。

可用的外掛程式檔案必須符合以下條件:- 可執行檔 - 位於使用者 PATH 中的任何位置 - 以 "kubectl-" 開頭

用法

$ kubectl plugin list

旗標

名稱 縮寫 預設值 用法
name-only false 若為 true,則僅顯示每個外掛程式的二進位名稱,而非完整路徑

version (版本)

列印目前內容的用戶端和伺服器版本

kubectl version

列印目前內容的用戶端和伺服器版本資訊。

用法

$ kubectl version

旗標

名稱 縮寫 預設值 用法
client false 若為 true,則僅顯示用戶端版本 (無需伺服器)。
output o 'yaml' 或 'json' 其中之一。
short false 若為 true,則僅列印版本號碼。