Kubernetes kubectl 命令概述


kubectl用於運行Kubernetes集群命令的管理工具。

語法

kubectl [command] [TYPE] [NAME] [flags]
  • command:指定要在一個或多個資源執行的操作
  • TYPE:指定資源類型Resource types。Resource types會區分大小寫,也可以指定單數,復數或縮寫的形式
  • Name區分大小寫,如果省略Name,則顯示所有資源的詳細信息
  • 命令行指定的flags將覆蓋默認值和任何相應的環境變量

格式化輸出 Formatting output

所有kubectl命令輸出的默認格式是可讀的純文本格式。要以特定的格式向終端窗口輸出詳細信息,可以將-o或-output flags 添加到支持的kubectl命令中。

語法

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

支持以下輸出格式:

輸出格式 描述
-o=custom-columns=spec 使用逗號分隔的custom columns列表打印一個表
-o=custom-columns-file=filename 使用文件中的custom columns模板打印表filename
-o=json 輸出JSON格式的API對象
-o=jsonpath-file=filename 打印由 file中的jsonpath表達式定義的字段filename
-o=name 僅打印資源名稱,而不打印其他內容
-o=wide 以純文本格式輸出任何附加信息。對於pod,包括node名稱
-o=yaml 輸出YAML格式的API對象
-o=jsonpath=template 打印在jsonpath表達式中定義的字段

sort排序

要將對象輸出到終端窗口中的排序列表,可以將--sort-by標志添加到kubectl支持的命令中,通過使用--sort-by標志指定任何數字或字符串字段來對對象進行排序,要指定字段,請使用jsonpath表達式。

$ kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
#打印按名稱排序的pod列表
$ kubectl get pods --sort-by=.metadata.name

kubectl 命令詳解

選項:

      --alsologtostderr[=false]: 同時輸出日志到標准錯誤控制台和文件。
      --api-version="": 和服務端交互使用的API版本。
      --certificate-authority="": 用以進行認證授權的.cert文件路徑。
      --client-certificate="": TLS使用的客戶端證書路徑。
      --client-key="": TLS使用的客戶端密鑰路徑。
      --cluster="": 指定使用的kubeconfig配置文件中的集群名。
      --context="": 指定使用的kubeconfig配置文件中的環境名。
      --insecure-skip-tls-verify[=false]: 如果為true,將不會檢查服務器憑證的有效性,這會導致你的HTTPS鏈接變得不安全。
      --kubeconfig="": 命令行請求使用的配置文件路徑。
      --log-backtrace-at=:0: 當日志長度超過定義的行數時,忽略堆棧信息。
      --log-dir="": 如果不為空,將日志文件寫入此目錄。
      --log-flush-frequency=5s: 刷新日志的最大時間間隔。
      --logtostderr[=true]: 輸出日志到標准錯誤控制台,不輸出到文件。
      --match-server-version[=false]: 要求服務端和客戶端版本匹配。
      --namespace="": 如果不為空,命令將使用此namespace。
      --password="": API Server進行簡單認證使用的密碼。
  -s, --server="": Kubernetes API Server的地址和端口號。
      --stderrthreshold=2: 高於此級別的日志將被輸出到錯誤控制台。
      --token="": 認證到API Server使用的令牌。
      --user="": 指定使用的kubeconfig配置文件中的用戶名。
      --username="": API Server進行簡單認證使用的用戶名。
      --v=0: 指定輸出日志的級別。
      --vmodule=: 指定輸出日志的模塊,格式如下:pattern=N,使用逗號分隔。

kubectl run

  • 創建並運行一個或多個容器鏡像。
  • 創建一個deployment 或job 來管理容器。

語法:

$ run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

示例:

# 啟動nginx實例。
$ kubectl run nginx --image=nginx
# 啟動hazelcast實例,暴露容器端口 5701。
$ kubectl run hazelcast --image=hazelcast --port=5701
# 啟動hazelcast實例,在容器中設置環境變量“DNS_DOMAIN = cluster”和“POD_NAMESPACE = default”。
$ kubectl run hazelcast --image=hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
# 啟動nginx實例,設置副本數5。
$ kubectl run nginx --image=nginx --replicas=5
# 運行 Dry  打印相應的API對象而不創建它們。
$ kubectl run nginx --image=nginx --dry-run

kubectl annotate

更新一個或多個資源的Annotations信息。

  • Annotations由key/value組成。
  • Annotations的目的是存儲輔助數據,特別是通過工具和系統擴展操作的數據,更多介紹在這里。
  • 如果--overwrite為true,現有的annotations可以被覆蓋,否則試圖覆蓋annotations將會報錯。
  • 如果設置了--resource-version,則更新將使用此resource version,否則將使用原有的resource version。
  • 支持的資源包括但不限於(大小寫不限):pods (po)、services (svc)、 replicationcontrollers (rc)、nodes (no)、events (ev)、componentstatuses (cs)、 limitranges (limits)、persistentvolumes (pv)、persistentvolumeclaims (pvc)、 resourcequotas (quota)和secrets。
$ kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

示例:

# 更新pod “foo”,設置其注解description的值為my frontend。
# 如果同一個注解被賦值了多次,只保存最后一次設置的值。
$ kubectl annotate pods foo description='my frontend'

# 更新“pod.json”文件中type和name字段指定的pod的注解。
$ kubectl annotate -f pod.json description='my frontend'

# 更新pod “foo”,設置其注解description的值為my frontend running nginx,已有的值將被覆蓋。
$ kubectl annotate --overwrite pods foo description='my frontend running nginx'

# 更新同一namespace下所有的pod。
$ kubectl annotate pods --all description='my frontend running nginx'

# 僅當pod “foo”當前版本為1時,更新其注解
$ kubectl annotate pods foo description='my frontend running nginx' --resource-version=1

# 更新pod “foo”,刪除其注解description。
# 不需要--override選項。
$ kubectl annotate pods foo description-

選項:

--all[=false]: 選擇namespace中所有指定類型的資源。
-f, --filename=[]: 用來指定待升級資源的文件名,目錄名或者URL。
--overwrite[=false]: 如果設置為true,允許覆蓋更新注解,否則拒絕更新已存在的注解。
--resource-version="": 如果不為空,僅當資源當前版本和指定版本相同時才能更新注解。僅當更新單個資源時有效。

其余選項繼承自父命令!

kubectl autoscale

使用 autoscaler 自動設置在kubernetes集群中運行的pod數量(水平自動伸縮)。
指定Deployment、ReplicaSet或ReplicationController,並創建已經定義好資源的自動伸縮器。使用自動伸縮器可以根據需要自動增加或減少系統中部署的pod數量。

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

示例:

# 使用 Deployment “foo”設定,使用默認的自動伸縮策略,指定目標CPU使用率,使其Pod數量在2到10之間。
$ kubectl autoscale deployment foo --min=2 --max=10

# 使用RC“foo”設定,使其Pod的數量介於1和5之間,CPU使用率維持在80%。
$ kubectl autoscale rc foo --max=5 --cpu-percent=80

kubectl apply

通過文件名或控制台輸入,對資源進行配置。
接受JSON和YAML格式的描述文件。

$ kubectl apply -f FILENAME

示例:

# 將pod.json中的配置應用到pod
$ kubectl apply -f ./pod.json

# 將控制台輸入的JSON配置應用到Pod
$ cat pod.json | kubectl apply -f -

選項:

  -f, --filename=[]: 包含配置信息的文件名,目錄名或者URL。
  -o, --output="": 輸出格式,使用“-o name”來輸出簡短格式(資源類型/資源名)。
      --schema-cache-dir="/tmp/kubectl.schema": 如果不為空,將API schema緩存為指定文件,默認緩存到“/tmp/kubectl.schema”。
      --validate[=true]: 如果為true,在發送到服務端前先使用schema來驗證輸入。

kubectl attach

連接到現有容器中一個正在運行的進程。

$ kubectl attach POD -c CONTAINER

示例:

# 獲取正在運行中的pod 123456-7890的輸出,默認連接到第一個容器
$ kubectl attach 123456-7890

# 獲取pod 123456-7890中ruby-container的輸出
$ kubectl attach 123456-7890 -c ruby-container date

# 切換到終端模式,將控制台輸入發送到pod 123456-7890的ruby-container的“bash”命令,並將其輸出到控制台/
# 錯誤控制台的信息發送回客戶端。
$ kubectl attach 123456-7890 -c ruby-container -i -t

選項:

  -c, --container="": 容器名。
  -i, --stdin[=false]: 將控制台輸入發送到容器。
  -t, --tty[=false]: 將標准輸入控制台作為容器的控制台輸入。

kubectl config

使用config的子命令修改kubeconfig配置文件,如“kubectl config set current-context my-context”。
配置文件的讀取遵循如下規則:

  • 如果指定了--kubeconfig選項,那么只有指定的文件被加載。此選項只能被設置一次,並且不會合並其他文件。
  • 如果設置了$KUBECONFIG環境變量,將同時使用此環境變量指定的所有文件列表(使用操作系統默認的順序),所有文件將被合並。當修改一個值時,將修改設置了該值的文件。當創建一個值時,將在列表的首個文件創建該值。若列表中所有的文件都不存在,將創建列表中的最后一個文件。
  • 如果前兩項都沒有設置,將使用 ${HOME}/.kube/config,並且不會合並其他文件。

kubectl config set-cluster
在kubeconfig配置文件中設置一個集群項。 如果指定了一個已存在的名字,將合並新字段並覆蓋舊字段。

$ kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certficate/authority] [--api-version=apiversion] [--insecure-skip-tls-verify=true]

示例

# 僅設置e2e集群項中的server字段,不影響其他字段
$ kubectl config set-cluster e2e --server=https://1.2.3.4

# 向e2e集群項中添加認證鑒權數據
$ kubectl config set-cluster e2e --certificate-authority=~/.kube/e2e/kubernetes.ca.crt

# 取消dev集群項中的證書檢查
$ kubectl config set-cluster e2e --insecure-skip-tls-verify=true

選項

      --api-version="": 設置kuebconfig配置文件中集群選項中的api-version。
      --certificate-authority="": 設置kuebconfig配置文件中集群選項中的certificate-authority路徑。
      --embed-certs=false: 設置kuebconfig配置文件中集群選項中的embed-certs開關。
      --insecure-skip-tls-verify=false: 設置kuebconfig配置文件中集群選項中的insecure-skip-tls-verify開關。
      --server="": 設置kuebconfig配置文件中集群選項中的server。

kubectl config set-context
在kubeconfig配置文件中設置一個環境項。 如果指定了一個已存在的名字,將合並新字段並覆蓋舊字段。

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

示例

# 設置gce環境項中的user字段,不影響其他字段。
$ kubectl config set-context gce --user=cluster-admin

選項

      --cluster="": 設置kuebconfig配置文件中環境選項中的集群。
      --namespace="": 設置kuebconfig配置文件中環境選項中的命名空間。
      --user="": 設置kuebconfig配置文件中環境選項中的用戶。

kubectl config set-credentials
在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]

示例

# 僅設置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

選項

      --client-certificate="": 設置kuebconfig配置文件中用戶選項中的證書文件路徑。
      --client-key="": 設置kuebconfig配置文件中用戶選項中的證書密鑰路徑。
      --embed-certs=false: 設置kuebconfig配置文件中用戶選項中的embed-certs開關。
      --password="": 設置kuebconfig配置文件中用戶選項中的密碼。
      --token="": 設置kuebconfig配置文件中用戶選項中的令牌。
      --username="": 設置kuebconfig配置文件中用戶選項中的用戶名。

kubectl config set
在kubeconfig配置文件中設置一個單獨的值
PROPERTY_NAME 使用“.”進行分隔,每段代表一個屬性名或者map的鍵,map的鍵不能包含“.”。 PROPERTY_VALUE 需要設置的新值。

$ kubectl config set PROPERTY_NAME PROPERTY_VALUE  

kubectl config unset
在kubeconfig配置文件中清除一個單獨的值。 PROPERTY_NAME 使用“.”進行分隔,每段代表一個屬性名或者map的鍵,map的鍵不能包含“.”。

$ kubectl config unset PROPERTY_NAME

kubectl config use-context
使用kubeconfig中的一個環境項作為當前配置。

$ kubectl config use-context CONTEXT_NAME

kubectl config view
顯示合並后的kubeconfig設置,或者一個指定的kubeconfig配置文件。 用戶可使用–output=template –template=TEMPLATE來選擇輸出指定的值。

$ kubectl config view

示例

# 顯示合並后的kubeconfig設置
$ kubectl config view

# 獲取e2e用戶的密碼
$ kubectl config view -o template --template='{{range .users}}{{ if eq .name "e2e" }}{{ index .user.password }}{{end}}{{end}}'

選項

      --flatten[=false]: 將讀取的kubeconfig配置文件扁平輸出為自包含的結構(對創建可遷移的kubeconfig配置文件有幫助)
      --merge=true: 按照繼承關系合並所有的kubeconfig配置文件。
      --minify[=false]: 如果為true,不顯示目前環境未使用到的任何信息。
      --no-headers[=false]: 當使用默認輸出格式時不打印標題欄。
  -o, --output="": 輸出格式,只能使用json|yaml|wide|name|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...中的一種。參見golang模板[http://golang.org/pkg/text/template/#pkg-overview]和jsonpath模板[http://releases.k8s.io/release-1.1/docs/user-guide/jsonpath.md]。
      --output-version="": 輸出資源使用的API版本(默認使用api-version)。
      --raw[=false]: 顯示未經格式化的字節信息。
  -a, --show-all[=false]: 打印輸出時,顯示所有的資源(默認隱藏狀態為terminated的pod)。
      --sort-by="": 如果不為空,對輸出的多個結果根據指定字段進行排序。該字段使用jsonpath表達式(如“ObjectMeta.Name”)描述,並且該字段只能為字符串或者整數類型。
      --template="": 當指定了-o=go-template或-o=go-template-file時使用的模板字符串或者模板文件。模板的格式為golang模板[http://golang.org/pkg/text/template/#pkg-overview]。

kubectl create

通過文件名或控制台輸入,創建資源。
接受JSON和YAML格式的描述文件。

$ kubectl create -f FILENAME

示例

# 使用pod.json文件創建一個pod
$ kubectl create -f ./pod.json

# 通過控制台輸入的JSON創建一個pod
$ cat pod.json | kubectl create -f -

# 創建一個名為my-dep的deployment,運行busybox鏡像。
$ kubectl create deployment my-dep --image=busybox

# 創建一個名為my-namespace的namespace
$ kubectl create namespace my-namespace

# 創建Service名為my-cs為的clusterIP
$ kubectl create service clusterip my-cs --tcp=5678:8080

# 創建Service名為my-ns的ExternalName
$ kubectl create service externalname my-ns --external-name bar.com

# 創建一個Service名為my-lbs的LoadBalancer。
$ kubectl create service loadbalancer my-lbs --tcp=5678:8080

# 創建service名為my-ns的新的nodeport。
$ kubectl create service nodeport my-ns --tcp=5678:8080

# 創建一個名為my-service-account的 service account
$ kubectl create serviceaccount my-service-account

選項

  -f, --filename=[]: 用以創建資源的文件名,目錄名或者URL。
  -o, --output="": 輸出格式,使用“-o name”來輸出簡短格式(資源類型/資源名)。
      --schema-cache-dir="/tmp/kubectl.schema": 如果不為空,將API schema緩存為指定文件,默認緩存到“/tmp/kubectl.schema”。
      --validate[=true]: 如果為true,在發送到服務端前先使用schema來驗證輸入。

kubectl delete

通過文件名、控制台輸入、資源名或者label selector刪除資源。 接受JSON和YAML格式的描述文件。
只能指定以下參數類型中的一種:文件名、資源類型和名稱、資源類型和label selector。 注意:delete命令不檢查資源版本,如果有人在你進行刪除操作的同時進行更新操作,他所做的更新將隨資源同時被刪除。

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

示例

# 通過pod.json文件中指定的資源類型和名稱刪除一個pod
$ kubectl delete -f ./pod.json

# 通過控制台輸入的JSON所指定的資源類型和名稱刪除一個pod
$ cat pod.json | kubectl delete -f -

# 刪除所有名為“baz”和“foo”的pod和service
$ kubectl delete pod,service baz foo

# 刪除所有帶有lable name=myLabel的pod和service
$ kubectl delete pods,services -l name=myLabel

# 刪除UID為1234-56-7890-234234-456456的pod
$ kubectl delete pod 1234-56-7890-234234-456456

# 刪除所有的pod
$ kubectl delete pods --all

選項

      --all[=false]: 使用[-all]選擇所有指定的資源。
      --cascade[=true]: 如果為true,級聯刪除指定資源所管理的其他資源(例如:被replication controller管理的所有pod)。默認為true。
  -f, --filename=[]: 用以指定待刪除資源的文件名,目錄名或者URL。
      --grace-period=-1: 安全刪除資源前等待的秒數。如果為負值則忽略該選項。
      --ignore-not-found[=false]: 當待刪除資源未找到時,也認為刪除成功。如果設置了--all選項,則默認為true。
  -o, --output="": 輸出格式,使用“-o name”來輸出簡短格式(資源類型/資源名)。
  -l, --selector="": 用於過濾資源的Label。
      --timeout=0: 刪除資源的超時設置,0表示根據待刪除資源的大小由系統決定。

kubectl describe

輸出指定的一個/多個資源的詳細信息。
此命令組合調用多條API,輸出指定的一個或者一組資源的詳細描述。

$ kubectl describe TYPE NAME_PREFIX

首先檢查是否有精確匹配TYPE和NAME_PREFIX的資源,如果沒有,將會輸出所有名稱以NAME_PREFIX開頭的資源詳細信息。

支持的資源包括但不限於(大小寫不限):pods (po)、services (svc)、 replicationcontrollers (rc)、nodes (no)、events (ev)、componentstatuses (cs)、 limitranges (limits)、persistentvolumes (pv)、persistentvolumeclaims (pvc)、 resourcequotas (quota)和secrets。

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

示例

# 描述一個node
$ kubectl describe nodes kubernetes-minion-emt8.c.myproject.internal

# 描述一個pod
$ kubectl describe pods/nginx

# 描述pod.json中的資源類型和名稱指定的pod
$ kubectl describe -f pod.json

# 描述所有的pod
$ kubectl describe pods

# 描述所有包含label name=myLabel的pod
$ kubectl describe po -l name=myLabel

# 描述所有被replication controller “frontend”管理的pod(rc創建的pod都以rc的名字作為前綴)
$ kubectl describe pods frontend

選項

  -f, --filename=[]: 用來指定待描述資源的文件名,目錄名或者URL。
  -l, --selector="": 用於過濾資源的Label。

kubectl edit

使用系統默認編輯器編輯服務端的資源。
edit命令允許你直接編輯使用命令行工具獲取的任何資源。此命令將打開你通過KUBE_EDITOR,GIT_EDITOR 或者EDITOR環境變量定義的編輯器,或者直接使用“vi”。你可以同時編輯多個資源,但所有的變更都只會一次性 提交。除了命令行參數外,此命令也接受文件名,但所直指定的文件必須使用早於當前的資源版本。
所編輯的文件將使用默認的API版本輸出,或者通過–output-version選項顯式指定。默認的輸出格式是YAML, 如果你需要使用JSON格式編輯,使用-o json選項。
如果當更新資源的時候出現錯誤,將會在磁盤上創建一個臨時文件,記錄未成功的更新。更新資源時最常見的錯誤 是其他人也在更新服務端的資源。當這種情況發生時,你需要將你所作的更改應用到最新版本的資源上,或者編輯 保存的臨時文件,使用最新的資源版本。

kubectl edit (RESOURCE/NAME | -f FILENAME)

示例

  # 編輯名為“docker-registry”的service
  $ kubectl edit svc/docker-registry

  # 使用一個不同的編輯器
  $ KUBE_EDITOR="nano" kubectl edit svc/docker-registry

  # 編輯名為“docker-registry”的service,使用JSON格式、v1 API版本
  $ kubectl edit svc/docker-registry --output-version=v1 -o json

選項

  -f, --filename=[]: 用來指定待編輯資源的文件名,目錄名或者URL。
  -o, --output="yaml": 輸出格式,可選yaml或者json中的一種。
      --output-version="": 輸出資源使用的API版本(默認使用api-version)。

kubectl exec

在容器內部執行命令。

$ kubectl exec POD [-c CONTAINER] -- COMMAND 
[args...]

示例

# 默認在pod 123456-7890的第一個容器中運行“date”並獲取輸出
$ kubectl exec 123456-7890 date

# 在pod 123456-7890的容器ruby-container中運行“date”並獲取輸出
$ kubectl exec 123456-7890 -c ruby-container date

# 切換到終端模式,將控制台輸入發送到pod 123456-7890的ruby-container的“bash”命令,並將其輸出到控制台/
# 錯誤控制台的信息發送回客戶端。
$ kubectl exec 123456-7890 -c ruby-container -i -t -- bash -il

選項

  -c, --container="": 容器名。如果未指定,使用pod中的一個容器。
  -p, --pod="": Pod名。
  -i, --stdin[=false]: 將控制台輸入發送到容器。
  -t, --tty[=false]: 將標准輸入控制台作為容器的控制台輸入。

kubectl get

獲取列出一個或多個資源的信息.

$ get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags]

示例

# 列出所有運行的Pod信息。
$ kubectl get pods

# 列出Pod以及運行Pod節點信息。
$ kubectl get pods -o wide

# 列出指定NAME的 replication controller信息。
$ kubectl get replicationcontroller web

# 以JSON格式輸出一個pod信息。
$ kubectl get -o json pod web-pod-13je7

# 以“pod.yaml”配置文件中指定資源對象和名稱輸出JSON格式的Pod信息。
$ kubectl get -f pod.yaml -o json

# 返回指定pod的相位值。
$ kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}

# 列出所有replication controllers和service信息。
$ kubectl get rc,services

# 按其資源和名稱列出相應信息。
$ kubectl get rc/web service/frontend pods/web-pod-13je7

# 列出所有不同的資源對象。
$ kubectl get all

kubectl label

更新(增加、修改或刪除)資源上的 label(標簽)。

  • label 必須以字母或數字開頭,可以使用字母、數字、連字符、點和下划線,最長63個字符。
  • 如果--overwrite 為 true,則可以覆蓋已有的 label,否則嘗試覆蓋 label 將會報錯。
  • 如果指定了--resource-version,則更新將使用此資源版本,否則將使用現有的資源版本。
$ label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

示例

給名為foo的Pod添加label unhealthy=true。

kubectl label pods foo unhealthy=true
給名為foo的Pod修改label 為 'status' / value 'unhealthy',且覆蓋現有的value。

kubectl label --overwrite pods foo status=unhealthy
給 namespace 中的所有 pod 添加 label

kubectl label pods --all status=unhealthy
僅當resource-version=1時才更新 名為foo的Pod上的label。

kubectl label pods foo status=unhealthy --resource-version=1
刪除名為“bar”的label 。(使用“ - ”減號相連)

kubectl label pods foo bar-

kubectl logs

輸出pod中一個容器的日志。如果pod只包含一個容器則可以省略容器名。

$ kubectl logs [-f] [-p] POD [-c CONTAINER]

示例

# 返回僅包含一個容器的pod nginx的日志快照
$ kubectl logs nginx

# 返回pod ruby中已經停止的容器web-1的日志快照
$ kubectl logs -p -c ruby web-1

# 持續輸出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1

# 僅輸出pod nginx中最近的20條日志
$ kubectl logs --tail=20 nginx

# 輸出pod nginx中最近一小時內產生的所有日志
$ kubectl logs --since=1h nginx

選項

  -c, --container="": 容器名。
  -f, --follow[=false]: 指定是否持續輸出日志。
      --interactive[=true]: 如果為true,當需要時提示用戶進行輸入。默認為true。
      --limit-bytes=0: 輸出日志的最大字節數。默認無限制。
  -p, --previous[=false]: 如果為true,輸出pod中曾經運行過,但目前已終止的容器的日志。
      --since=0: 僅返回相對時間范圍,如5s、2m或3h,之內的日志。默認返回所有日志。只能同時使用since和since-time中的一種。
      --since-time="": 僅返回指定時間(RFC3339格式)之后的日志。默認返回所有日志。只能同時使用since和since-time中的一種。
      --tail=-1: 要顯示的最新的日志條數。默認為-1,顯示所有的日志。
      --timestamps[=false]: 在日志中包含時間戳。

kubectl replace

使用配置文件或stdin來替換資源。
支持JSON和YAML格式。

$ replace -f FILENAME

示例

# 使用pod.json中的數據替換pod。
$ kubectl replace -f ./pod.json

# 根據傳入的JSON替換pod。
$ cat pod.json | kubectl replace -f -

# 更新鏡像版本(tag)到v4
$ kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -

# 強制替換,刪除原有資源,然后重新創建資源
$kubectl replace --force -f ./pod.json

kubectl scale

擴容或縮容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod數量。
scale也可以指定多個前提條件,如:當前副本數量或 --resource-version ,進行伸縮比例設置前,系統會先驗證前提條件是否成立。

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

示例

# 將名為foo中的pod副本數設置為3。
$ kubectl scale --replicas=3 rs/foo

# 將由“foo.yaml”配置文件中指定的資源對象和名稱標識的Pod資源副本設為3。
$ kubectl scale --replicas=3 -f foo.yaml

# 如果當前副本數為2,則將其擴展至3。
$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

# 設置多個RC中Pod副本數量。
$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz


免責聲明!

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



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