入门

本节包含在您的集群上运行工作负载的最基本命令。

一旦您的工作负载正在运行,您可以使用使用应用部分中的命令来检查它们。


创建

使用 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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
编辑 false 在创建之前编辑 API 资源
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于创建资源的文件、目录或 URL
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
原始 要 POST 到服务器的原始 URI。 使用 kubeconfig 文件指定的传输。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入
Windows 行尾 false 仅当 --edit=true 时相关。 默认为您平台原生的行尾。

集群角色

创建一个名为“pod-reader”的集群角色,允许用户对 pod 执行“get”、“watch”和“list”操作

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

创建具有指定 ResourceName 的名为“pod-reader”的集群角色

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

创建具有指定 API 组的名为“foo”的集群角色

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

创建具有指定子资源的名为“foo”的集群角色

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

创建具有指定 NonResourceURL 的名为“foo”的集群角色

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

创建具有指定 AggregationRule 的名为“monitoring”的集群角色

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

创建一个集群角色。

用法

$ kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
聚合规则 用于组合 ClusterRoles 的聚合标签选择器。
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
非资源 URL [] 用户应该有权访问的部分 URL。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
资源 [] 该规则适用的资源
资源名称 [] 该规则适用的白名单中的资源,重复此标志以获取多个项目
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入
动词 [] 应用于规则中包含的资源的动词

集群角色绑定

使用 cluster-admin 集群角色为 user1、user2 和 group1 创建集群角色绑定

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

为特定集群角色创建集群角色绑定。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
集群角色 此 ClusterRoleBinding 应该引用的 ClusterRole
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
[] 要绑定到集群角色的组
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
服务账号 [] 要绑定到集群角色的服务帐户,格式为 <命名空间>:<名称>
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

配置映射

基于文件夹 bar 创建一个名为 my-config 的新配置映射

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

创建一个名为 my-config 的新配置映射,其中指定了键,而不是磁盘上的文件基本名称

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

创建一个名为 my-config 的新配置映射,其中 key1=config1 且 key2=config2

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

从文件中的键=值对创建一个名为 my-config 的新配置映射

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

从 env 文件创建一个名为 my-config 的新配置映射

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

基于文件、目录或指定的文字值创建一个配置映射。

单个配置映射可以打包一个或多个键/值对。

当基于文件创建配置映射时,键将默认为文件的基本名称,而值将默认为文件内容。 如果基本名称是无效的键,您可以指定备用键。

当基于目录创建配置映射时,目录中每个基本名称是有效键的文件都将打包到配置映射中。 除常规文件外的任何目录条目都将被忽略(例如,子目录、符号链接、设备、管道等)。

用法

$ kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
追加哈希 false 将配置映射的哈希追加到其名称。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
来自 env 文件 指定要读取 key=val 对行以创建配置映射的文件的路径(即 Docker .env 文件)。
来自文件 [] 可以使用其文件路径指定键文件,在这种情况下,文件基本名称将用作配置映射键,也可以选择使用键和文件路径,在这种情况下,将使用给定的键。 指定目录将迭代目录中每个基本名称是有效配置映射键的命名文件。
来自文字 [] 指定要在配置映射中插入的键和文字值(即 mykey=somevalue)
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

定时任务

创建一个定时任务

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

使用命令创建一个定时任务

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

使用指定名称创建一个定时任务。

用法

$ kubectl create cronjob NAME --image=image --schedule='0/5 * * * ?' -- [COMMAND] [args...]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
镜像 要运行的镜像名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
重启 任务的重启策略。 支持的值:OnFailure、Never
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
计划 任务应运行的 Cron 格式的计划。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

部署

创建一个名为 my-dep 的部署,该部署运行 busybox 镜像

kubectl create deployment my-dep --image=busybox

使用命令创建一个部署

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

创建一个名为 my-dep 的部署,该部署运行具有 3 个副本的 nginx 镜像

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

创建一个名为 my-dep 的部署,该部署运行 busybox 镜像并暴露端口 5701

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

使用指定名称创建一个部署。

用法

$ kubectl create deployment NAME --image=image -- [COMMAND] [args...]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
镜像 [] 要运行的镜像名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
端口 -1 此容器暴露的端口。
副本 r 1 要创建的副本数。 默认为 1。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

入口

创建一个名为“simple”的入口,该入口将请求定向到 foo.com/bar 到 svc # svc1:8080,并使用 tls 密钥“my-cert”

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

创建一个指向服务 svc:port 且入口类为“otheringress”的“/path”的捕获所有入口

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

使用两个注解创建入口:ingress.annotation1 和 ingress.annotations2

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

创建具有相同主机和多个路径的入口

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

创建具有多个主机且 pathType 为 Prefix 的入口

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

创建启用 TLS 的入口,使用默认入口证书和不同的路径类型

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

创建使用特定密钥且 pathType 为 Prefix 的启用 TLS 的入口

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

创建具有默认后端的入口

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

使用指定名称创建一个入口。

用法

$ kubectl create ingress NAME --rule=host/path=service:port[,tls[=secret]]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
注解 [] 要在入口对象中插入的注解,格式为 annotation=value
要使用的入口类
默认后端 后端的默认服务,格式为 svcname:port
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
规则 [] 格式为 host/path=service:port[,tls=secretname]的规则。 包含前导字符“*”的路径被视为 pathType=Prefix。 tls 参数是可选的。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

任务

创建一个任务

kubectl create job my-job --image=busybox

使用命令创建一个任务

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

从名为“a-cronjob”的定时任务创建一个任务

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

使用指定名称创建一个任务。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
来自 要从中创建任务的资源的名称(仅支持 cronjob)。
镜像 要运行的镜像名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

命名空间

创建一个名为 my-namespace 的新命名空间

kubectl create namespace my-namespace

使用指定名称创建一个命名空间。

用法

$ kubectl create namespace 名称 [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

Pod 中断预算

创建一个名为 my-pdb 的 Pod 中断预算,它将选择所有带有 app=rails 标签的 Pod,# 并要求在任何时间点至少有一个可用

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

创建一个名为 my-pdb 的 Pod 中断预算,它将选择所有带有 app=nginx 标签的 Pod,# 并要求在任何时间点至少有一半的 Pod 可用

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

创建一个具有指定名称、选择器和所需最小可用 Pod 的 Pod 中断预算。

用法

$ kubectl create poddisruptionbudget 名称 --selector=选择器 --min-available=N [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
max-unavailable 此预算要求的不可用 Pod 的最大数量或百分比。
min-available 此预算要求的可用 Pod 的最小数量或百分比。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
选择器 用于此预算的标签选择器。仅支持基于相等的选择器要求。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

优先级类

创建一个名为 high-priority 的优先级类

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

创建一个名为 default-priority 的优先级类,该类被认为是全局默认优先级

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

创建一个名为 high-priority 的优先级类,该类不能抢占优先级较低的 Pod

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

创建一个具有指定名称、值、globalDefault 和描述的优先级类。

用法

$ kubectl create priorityclass 名称 --value=值 --global-default=布尔值 [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
description description 是一个任意字符串,通常提供有关何时应使用此优先级类的指南。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
global-default false global-default 指定此 PriorityClass 是否应被视为默认优先级。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
preemption-policy PreemptLowerPriority preemption-policy 是抢占较低优先级 Pod 的策略。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入
value 0 此优先级类的值。

配额

创建一个名为 my-quota 的新资源配额

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

创建一个名为 best-effort 的新资源配额

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

创建一个具有指定名称、硬限制和可选范围的资源配额。

用法

$ kubectl create quota 名称 [--hard=key1=value1,key2=value2] [--scopes=范围1,范围2] [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
hard 一个逗号分隔的 resource=quantity 对集合,用于定义硬限制。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
scopes 一个逗号分隔的配额范围集合,所有这些范围必须与配额跟踪的每个对象匹配。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

角色

创建一个名为“pod-reader”的角色,允许用户对 Pod 执行“get”、“watch”和“list”操作

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

创建一个具有指定 ResourceName 的名为“pod-reader”的角色

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

创建一个具有指定 API 组的名为“foo”的角色

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

创建一个具有指定 SubResource 的名为“foo”的角色

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

创建一个带有单个规则的角色。

用法

$ kubectl create role 名称 --verb=动词 --resource=resource.group/subresource [--resource-name=资源名称] [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
资源 [] 该规则适用的资源
资源名称 [] 该规则适用的白名单中的资源,重复此标志以获取多个项目
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入
动词 [] 应用于规则中包含的资源的动词

角色绑定

使用 admin 集群角色为 user1、user2 和 group1 创建一个角色绑定

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

为一个特定的角色或集群角色创建一个角色绑定。

用法

$ kubectl create rolebinding 名称 --clusterrole=名称|--role=名称 [--user=用户名] [--group=组名] [--serviceaccount=命名空间:服务账户名称] [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
集群角色 此 RoleBinding 应引用的 ClusterRole
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
[] 要绑定到角色的组
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
角色 此 RoleBinding 应引用的角色
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
服务账号 [] 要绑定到角色的服务帐户,格式为 <namespace>:<name>
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

密钥

使用指定的子命令创建一个密钥。

用法

$ kubectl create secret


密钥 docker-registry

如果你还没有 .dockercfg 文件,你可以使用以下方式直接创建一个 dockercfg 密钥

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

从 ~/.docker/config.json 创建一个名为 my-secret 的新密钥

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

创建一个用于 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 密钥并将其附加到你的服务帐户来提供此信息。

用法

$ kubectl create secret docker-registry 名称 --docker-username=用户 --docker-password=密码 --docker-email=电子邮件 [--docker-server=字符串] [--from-file=[key=]来源] [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
追加哈希 false 将密钥的哈希值附加到其名称。
docker-email Docker 注册表的电子邮件
docker-password 用于 Docker 注册表身份验证的密码
docker-server https://index.docker.io/v1/ Docker 注册表的服务器位置
docker-username 用于 Docker 注册表身份验证的用户名
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
来自文件 [] 可以使用其文件路径指定密钥文件,在这种情况下,将为其指定默认名称,或者可以选择使用名称和文件路径,在这种情况下,将使用给定的名称。指定目录将迭代目录中每个命名文件,该文件是有效的密钥。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

密钥 generic

创建一个名为 my-secret 的新密钥,其中包含文件夹 bar 中每个文件的密钥

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

创建一个名为 my-secret 的新密钥,其中包含指定的密钥,而不是磁盘上的名称

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

创建一个名为 my-secret 的新密钥,其中 key1=supersecret 和 key2=topsecret

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

使用文件和文字组合创建一个名为 my-secret 的新密钥

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

从 env 文件创建一个名为 my-secret 的新密钥

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

根据文件、目录或指定的文字值创建一个密钥。

单个密钥可以打包一个或多个键/值对。

当基于文件创建密钥时,密钥将默认为该文件的基本名称,并且值将默认为该文件内容。如果基本名称是无效密钥或者你希望选择自己的密钥,则可以指定一个备用密钥。

当基于目录创建密钥时,该目录中基本名称是有效密钥的每个文件都将被打包到密钥中。将忽略任何目录条目,除了常规文件(例如,子目录、符号链接、设备、管道等)。

用法

$ kubectl create generic 名称 [--type=字符串] [--from-file=[key=]来源] [--from-literal=key1=value1] [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
追加哈希 false 将密钥的哈希值附加到其名称。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
来自 env 文件 指定文件的路径以读取 key=val 对的行以创建密钥(即 Docker .env 文件)。
来自文件 [] 可以使用其文件路径指定密钥文件,在这种情况下,将为其指定默认名称,或者可以选择使用名称和文件路径,在这种情况下,将使用给定的名称。指定目录将迭代目录中每个命名文件,该文件是有效的密钥。
来自文字 [] 指定要在密钥中插入的键和文字值(即 mykey=somevalue)
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
type 要创建的密钥的类型
验证 true 如果为 true,则在发送之前使用架构来验证输入

密钥 tls

使用给定的密钥对创建一个名为 tls-secret 的新 TLS 密钥

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

从给定的公钥/私钥对创建一个 TLS 密钥。

公钥/私钥对必须预先存在。公钥证书必须是 .PEM 编码,并且与给定的私钥匹配。

用法

$ kubectl create secret tls 名称 --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
追加哈希 false 将密钥的哈希值附加到其名称。
cert PEM 编码的公钥证书的路径。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
key 与给定证书关联的私钥的路径。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

服务

使用指定的子命令创建一个服务。

用法

$ kubectl create service


服务 clusterip

创建一个名为 my-cs 的新 ClusterIP 服务

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

创建一个名为 my-cs 的新 ClusterIP 服务(在无头模式下)

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

创建一个具有指定名称的 ClusterIP 服务。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
clusterip 分配你自己的 ClusterIP,或将其设置为“None”以用于“无头”服务(不进行负载均衡)。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
tcp [] 端口对可以指定为“<port>:<targetPort>”。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

服务 externalname

创建一个名为 my-ns 的新 ExternalName 服务

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

创建一个具有指定名称的 ExternalName 服务。

ExternalName 服务引用外部 DNS 地址,而不是仅引用 Pod,这将允许应用程序作者引用存在于平台之外、其他集群上或本地的服务。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
external-name 服务的外部名称
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
tcp [] 端口对可以指定为“<port>:<targetPort>”。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

服务 loadbalancer

创建一个名为 my-lbs 的新 LoadBalancer 服务

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

创建一个具有指定名称的 LoadBalancer 服务。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
tcp [] 端口对可以指定为“<port>:<targetPort>”。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

服务 nodeport

创建一个名为 my-ns 的新 NodePort 服务

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

创建一个具有指定名称的 NodePort 服务。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
node-port 0 用于在集群中的每个节点上公开服务的端口。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
tcp [] 端口对可以指定为“<port>:<targetPort>”。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

服务账号

创建一个名为 my-service-account 的新服务帐户

kubectl create serviceaccount my-service-account

创建一个具有指定名称的服务帐户。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-create 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

获取

以 ps 输出格式列出所有 Pod

kubectl get pods

以 ps 输出格式列出所有 Pod,其中包含更多信息(例如节点名称)

kubectl get pods -o wide

以 ps 输出格式列出具有指定名称的单个复制控制器

kubectl get replicationcontroller web

以 JSON 输出格式列出部署,在“apps”API 组的“v1”版本中

kubectl get deployments.v1.apps -o json

以 JSON 输出格式列出单个 Pod

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

以 JSON 输出格式列出在“pod.yaml”中指定的类型和名称标识的 Pod

kubectl get -f pod.yaml -o json

从带有 kustomization.yaml 的目录列出资源 - 例如 dir/kustomization.yaml

kubectl get -k dir/

仅返回指定 Pod 的阶段值

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

以自定义列列出资源信息

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

以 ps 输出格式一起列出所有复制控制器和服务

kubectl get rc,services

按其类型和名称列出一个或多个资源

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

显示一个或多个资源。

打印有关指定资源的最重要信息的表格。你可以使用标签选择器和 --selector 标志过滤列表。如果所需的资源类型是命名空间的,你将只能在当前命名空间中看到结果,除非你传递 --all-namespaces。

除非传递 --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 标签] | TYPE[.VERSION][.GROUP]/NAME ...) [标志]

标志

名称 简写 默认值 用法
all-namespaces A false 如果存在,则列出所有命名空间中请求的对象。即使使用 --namespace 指定,也会忽略当前上下文中的命名空间。
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
chunk-size 500 分块返回大列表,而不是一次全部返回。传递 0 以禁用。此标志为 beta 版本,将来可能会更改。
field-selector 用于筛选的选择器(字段查询),支持“=”、“==”和“!=”。(例如 --field-selector key1=value1,key2=value2)。服务器每种类型仅支持有限数量的字段查询。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
ignore-not-found false 如果请求的对象不存在,则该命令将返回退出代码 0。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
label-columns L [] 接受一个逗号分隔的标签列表,这些标签将显示为列。名称区分大小写。你还可以使用多个标志选项,例如 -L label1 -L label2...
no-headers false 当使用默认或自定义列输出格式时,请勿打印标头(默认打印标头)。
输出 o 输出格式。其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns-file|custom-columns|wide 请参阅自定义列 [https://kubernetes.ac.cn/zh-cn/docs/reference/kubectl/overview/#custom-columns],golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview] 和 jsonpath 模板 [https://kubernetes.ac.cn/docs/reference/kubectl/jsonpath/]
output-watch-events false 当使用 --watch 或 --watch-only 时,输出监视事件对象。现有对象将作为初始 ADDED 事件输出。
原始 从服务器请求的原始 URI。使用 kubeconfig 文件指定的传输方式。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
server-print true 如果为 true,则让服务器返回相应的表格输出。支持扩展 API 和 CRD。
show-kind false 如果存在,则列出请求对象的资源类型。
show-labels false 打印时,将所有标签显示为最后一列(默认隐藏标签列)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
排序依据 如果非空,则使用此字段规范对列表类型进行排序。字段规范表示为 JSONPath 表达式(例如 '{.metadata.name}')。此 JSONPath 表达式指定的 API 资源中的字段必须是整数或字符串。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
使用 OpenAPI 打印列 false 如果为 true,则使用 OpenAPI 模式中的 x-kubernetes-print-column 元数据(如果存在)来显示资源。
监视 w false 在列出/获取请求的对象后,监视更改。如果未提供对象名称,则会排除未初始化的对象。
仅监视 false 监视请求的对象的更改,而不先列出/获取。

运行

启动一个 nginx Pod

kubectl run nginx --image=nginx

启动一个 hazelcast Pod 并让容器暴露端口 5701

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

启动一个 hazelcast Pod 并在容器中设置环境变量 "DNS_DOMAIN=cluster" 和 "POD_NAMESPACE=default"

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

启动一个 hazelcast Pod 并在容器中设置标签 "app=hazelcast" 和 "env=prod"

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

模拟运行;打印相应的 API 对象而不创建它们

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

启动一个 nginx Pod,但使用从 JSON 解析的部分值来重载规范

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

启动一个 busybox Pod 并使其在前台运行,如果它退出则不重新启动

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

使用默认命令启动 nginx Pod,但为该命令使用自定义参数 (arg1 .. argN)

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

使用不同的命令和自定义参数启动 nginx Pod

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

在 Pod 中创建并运行特定的镜像。

用法

$ kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
注解 [] 要应用于 Pod 的注解。
附加 false 如果为 true,则等待 Pod 开始运行,然后附加到 Pod,就像调用 'kubectl attach ...' 一样。默认值为 false,除非设置了 '-i/--stdin',在这种情况下,默认值为 true。使用 '--restart=Never' 返回容器进程的退出代码。
级联 后台 必须是“background”、“orphan”或“foreground”。为依赖项(例如,由 ReplicationController 创建的 Pod)选择删除级联策略。默认为 background。
命令 false 如果为 true 并且存在额外的参数,则将它们用作容器中的 'command' 字段,而不是默认的 'args' 字段。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
环境变量 [] 要在容器中设置的环境变量。
暴露 false 如果为 true,则为正在运行的容器创建服务
字段管理器 kubectl-run 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于替换资源。
强制 false 如果为 true,则立即从 API 中删除资源并绕过优雅删除。请注意,立即删除某些资源可能会导致不一致或数据丢失,并且需要确认。
宽限期 -1 给予资源优雅终止的时间段(以秒为单位)。如果为负数,则忽略。设置为 1 表示立即关闭。只有当 --force 为 true(强制删除)时,才能设置为 0。
主机端口 -1 容器端口的主机端口映射。用于演示单机容器。
镜像 要运行的容器的镜像。
镜像拉取策略 容器的镜像拉取策略。如果留空,则客户端不会指定此值,而是由服务器默认设置
自定义 k 处理 kustomization 目录。此标志不能与 -f 或 -R 一起使用。
标签 l 要应用于 Pod 的逗号分隔的标签。将覆盖以前的值。
保持 stdin 打开 false 如果在交互模式下或使用 stdin 启动 Pod,则在第一次附加完成后保持 stdin 打开。默认情况下,在第一次附加完成后将关闭 stdin。
限制 此容器的资源需求限制。例如,'cpu=200m,memory=512Mi'。请注意,服务器端组件可能会根据服务器配置(例如,限制范围)分配限制。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
覆盖 为生成的对象提供的内联 JSON 覆盖。如果此项非空,则用于覆盖生成的对象。要求对象提供有效的 apiVersion 字段。
Pod 运行超时 1m0s 等待直到至少一个 Pod 运行的时间长度(如 5s、2m 或 3h,大于零)
端口 此容器暴露的端口。
特权 false 如果为 true,则在特权模式下运行容器。
静默 q false 如果为 true,则禁止显示提示消息。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
请求 此容器的资源需求请求。例如,'cpu=100m,memory=256Mi'。请注意,服务器端组件可能会根据服务器配置(例如,限制范围)分配请求。
重启 始终 此 Pod 的重启策略。合法的值 [Always, OnFailure, Never]
rm false 如果为 true,则删除在此命令中为附加的容器创建的资源。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
服务账号 在 Pod 规范中设置的服务帐户。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
标准输入 i false 即使没有附加任何内容,也保持 Pod 中容器上的 stdin 打开。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
超时 0s 放弃删除之前等待的时间长度,零表示从对象的大小确定超时时间
终端 t false 为 Pod 中的每个容器分配一个 TTY。
等待 false 如果为 true,则在返回之前等待资源消失。这将等待终结器。

暴露

为复制的 nginx 创建服务,该服务在端口 80 上提供服务,并在端口 8000 上连接到容器

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

为由“nginx-controller.yaml”中指定的类型和名称标识的复制控制器创建服务,该服务在端口 80 上提供服务,并在端口 8000 上连接到容器

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

为 Pod valid-pod 创建服务,该服务在端口 444 上提供服务,名称为 "frontend"

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

基于上述服务创建第二个服务,将容器端口 8443 作为端口 443 暴露,名称为 "nginx-https"

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

为端口 4100 上的复制流应用程序创建服务,平衡 UDP 流量,名称为 'video-stream'。

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

使用副本集为复制的 nginx 创建服务,该服务在端口 80 上提供服务,并在端口 8000 上连接到容器

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

为 nginx 部署创建服务,该服务在端口 80 上提供服务,并在端口 8000 上连接到容器

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

将资源作为新的 Kubernetes 服务公开。

按名称查找部署、服务、副本集、复制控制器或 Pod,并使用该资源的选择器作为指定端口上新服务的选择器。仅当其选择器可转换为服务支持的选择器时(即,当选择器仅包含 matchLabels 组件时),部署或副本集才会被公开为服务。请注意,如果未通过 --port 指定端口,并且公开的资源具有多个端口,则所有端口都将被新服务重复使用。此外,如果未指定标签,则新服务将重复使用其公开的资源中的标签。

可能的资源包括(不区分大小写)

pod (po), service (svc), replicationcontroller (rc), deployment (deploy), replicaset (rs)

用法

$ 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]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
集群 IP 要分配给服务的 ClusterIP。留空以自动分配,或设置为 'None' 以创建无头服务。
容器端口 --target-port 的同义词
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
外部 IP 要接受服务的其他外部 IP 地址(不由 Kubernetes 管理)。如果此 IP 被路由到节点,则除了其生成的服务 IP 之外,还可以通过此 IP 访问该服务。
字段管理器 kubectl-expose 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于标识要公开的服务的资源的文件、目录或 URL
生成器 service/v2 要使用的 API 生成器的名称。有两个生成器:'service/v1' 和 'service/v2'。它们之间唯一的区别是 v1 中的服务端口名为 'default',而 v2 中则未命名。默认为 'service/v2'。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
标签 l 要应用于此调用创建的服务的标签。
负载均衡器 IP 要分配给 LoadBalancer 的 IP。如果为空,将创建并使用临时 IP(特定于云提供商)。
名称 新创建的对象的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
覆盖 为生成的对象提供的内联 JSON 覆盖。如果此项非空,则用于覆盖生成的对象。要求对象提供有效的 apiVersion 字段。
端口 服务应在其上提供服务的端口。如果未指定,则从公开的资源复制
协议 要创建的服务的网络协议。默认为“TCP”。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
选择器 用于此服务的标签选择器。仅支持基于相等的选择器要求。如果为空(默认),则从复制控制器或副本集推断选择器。)
会话亲和性 如果非空,则将服务的会话亲和性设置为此;合法的值:'None', 'ClientIP'
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
目标端口 服务应将流量定向到的容器上的端口的名称或编号。可选。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
type 此服务的类型:ClusterIP、NodePort、LoadBalancer 或 ExternalName。默认为“ClusterIP”。

删除

使用 pod.json 中指定的类型和名称删除 Pod

kubectl delete -f ./pod.json

从包含 kustomization.yaml 的目录中删除资源 - 例如 dir/kustomization.yaml

kubectl delete -k dir

根据传入 stdin 的 JSON 中的类型和名称删除 Pod

cat pod.json | kubectl delete -f -

删除名称相同的 Pod 和服务 "baz" 和 "foo"

kubectl delete pod,service baz foo

删除标签为 name=myLabel 的 Pod 和服务

kubectl delete pods,services -l name=myLabel

以最小延迟删除 Pod

kubectl delete pod foo --now

强制删除死节点上的 Pod

kubectl delete pod foo --force

删除所有 Pod

kubectl delete pods --all

按文件名、stdin、资源和名称或按资源和标签选择器删除资源。

接受 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 删除指定资源类型命名空间中的所有资源,包括未初始化的资源。
all-namespaces A false 如果存在,则列出所有命名空间中请求的对象。即使使用 --namespace 指定,也会忽略当前上下文中的命名空间。
级联 后台 必须是“background”、“orphan”或“foreground”。为依赖项(例如,由 ReplicationController 创建的 Pod)选择删除级联策略。默认为 background。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
field-selector 用于筛选的选择器(字段查询),支持“=”、“==”和“!=”。(例如 --field-selector key1=value1,key2=value2)。服务器每种类型仅支持有限数量的字段查询。
文件名 f [] 包含要删除的资源的。
强制 false 如果为 true,则立即从 API 中删除资源并绕过优雅删除。请注意,立即删除某些资源可能会导致不一致或数据丢失,并且需要确认。
宽限期 -1 给予资源优雅终止的时间段(以秒为单位)。如果为负数,则忽略。设置为 1 表示立即关闭。只有当 --force 为 true(强制删除)时,才能设置为 0。
ignore-not-found false 将“未找到资源”视为成功删除。当指定 --all 时,默认为“true”。
自定义 k 处理 kustomization 目录。此标志不能与 -f 或 -R 一起使用。
now false 如果为 true,则会发出信号立即关闭资源(与 --grace-period=1 相同)。
输出 o 输出模式。使用 "-o name" 可获得较短的输出(资源/名称)。
原始 向服务器发送 DELETE 的原始 URI。使用 kubeconfig 文件指定的传输方式。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的 Selector(标签查询),不包括未初始化的资源。
超时 0s 放弃删除之前等待的时间长度,零表示从对象的大小确定超时时间
等待 true 如果为 true,则在返回之前等待资源消失。这将等待终结器。

应用管理

本节包含用于在 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 选择指定资源类型的命名空间中的所有资源。
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
级联 后台 必须是“background”、“orphan”或“foreground”。为依赖项(例如,由 ReplicationController 创建的 Pod)选择删除级联策略。默认为 background。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-client-side-apply 用于跟踪字段所有权的管理器的名称。
文件名 f [] 包含要应用的配置
强制 false 如果为 true,则立即从 API 中删除资源并绕过优雅删除。请注意,立即删除某些资源可能会导致不一致或数据丢失,并且需要确认。
force-conflicts false 如果为 true,则服务器端应用将强制针对冲突进行更改。
宽限期 -1 给予资源优雅终止的时间段(以秒为单位)。如果为负数,则忽略。设置为 1 表示立即关闭。只有当 --force 为 true(强制删除)时,才能设置为 0。
自定义 k 处理 kustomization 目录。此标志不能与 -f 或 -R 一起使用。
openapi-patch true 如果为 true,当 openapi 存在且可以在 openapi 规范中找到资源时,使用 openapi 计算差异。否则,回退到使用内置类型。
输出 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 的默认白名单
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
server-side false 如果为 true,则 apply 在服务器上而不是在客户端上运行。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
超时 0s 放弃删除之前等待的时间长度,零表示从对象的大小确定超时时间
验证 true 如果为 true,则在发送之前使用架构来验证输入
等待 false 如果为 true,则在返回之前等待资源消失。这将等待终结器。

编辑上次应用

以 YAML 格式编辑按类型/名称的最后应用配置注释

kubectl apply edit-last-applied deployment/nginx

以 JSON 格式编辑文件中最后应用的配置注释

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

从默认编辑器编辑资源的最新最后应用配置注释。

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)

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
字段管理器 kubectl-client-side-apply 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于编辑资源的文件的文件名、目录或 URL
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
Windows 行尾 false 默认为你的平台原生的行尾。

设置上次应用

设置资源的最后应用配置以匹配文件的内容

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

针对目录中的每个配置文件执行 set-last-applied

kubectl apply set-last-applied -f path/

设置资源的最后应用配置以匹配文件的内容;如果该注释尚不存在,则会创建该注释

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

通过将其设置为匹配文件的内容来设置最新的最后应用配置注释。这会导致最后应用配置被更新,就像运行了 'kubectl apply -f' 一样,而不会更新对象的任何其他部分。

用法

$ kubectl apply set-last-applied -f FILENAME

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
create-annotation false 如果当前对象没有 'last-applied-configuration' 注释,则会创建该注释
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
文件名 f [] 包含最后应用配置注释的文件、目录或 URL 的文件名。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

查看上次应用

以 YAML 格式查看按类型/名称的最后应用配置注释

kubectl apply view-last-applied deployment/nginx

以 JSON 格式查看文件中最后应用的配置注释

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

按类型/名称或文件查看最新的最后应用配置注释。

默认输出将以 YAML 格式打印到 stdout。你可以使用 -o 选项来更改输出格式。

用法

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

标志

名称 简写 默认值 用法
all false 选择指定资源类型的命名空间中的所有资源
文件名 f [] 包含最后应用配置注释的文件、目录或 URL 的文件名。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o yaml 输出格式。必须是 yaml|json 之一
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)

注解

使用注释“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 并且与服务器上的当前资源版本不匹配,则该命令将失败。

使用“kubectl api-resources”获取支持的资源的完整列表。

用法

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

标志

名称 简写 默认值 用法
all false 选择指定资源类型的命名空间中的所有资源,包括未初始化的资源。
all-namespaces A false 如果为 true,请检查所有命名空间中的指定操作。
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-annotate 用于跟踪字段所有权的管理器的名称。
field-selector 用于筛选的选择器(字段查询),支持“=”、“==”和“!=”。(例如 --field-selector key1=value1,key2=value2)。服务器每种类型仅支持有限数量的字段查询。
文件名 f [] 标识要更新注释的资源的文件、目录或 URL 的文件名。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
列表 false 如果为 true,则显示给定资源的注释。
local false 如果为 true,则注释将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite false 如果为 true,则允许覆盖注释,否则拒绝覆盖现有注释的注释更新。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
resource-version 如果非空,则注释更新只有当它是对象的当前资源版本时才会成功。仅当指定单个资源时才有效。
选择器 l 用于筛选的 Selector(标签查询),不包括未初始化的资源,支持“=”、“==”和“!=”。(例如 -l key1=value1,key2=value2)。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

自动缩放

自动缩放部署“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 数量。

按名称查找部署、副本集、有状态集或复制控制器,并创建一个自动缩放器,该缩放器将给定的资源用作参考。自动缩放器可以根据需要在系统中自动增加或减少部署的 Pod 数量。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
cpu-percent -1 所有 Pod 的目标平均 CPU 利用率(表示为请求 CPU 的百分比)。如果未指定或为负数,将使用默认的自动缩放策略。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-autoscale 用于跟踪字段所有权的管理器的名称。
文件名 f [] 标识要自动缩放的资源的文件、目录或 URL 的文件名。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
max -1 自动缩放器可以设置的 Pod 数量的上限。必需。
min -1 自动缩放器可以设置的 Pod 数量的下限。如果未指定或为负数,服务器将应用默认值。
名称 新创建的对象的名称。如果未指定,将使用输入资源的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

调试

在 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...] ]

标志

名称 简写 默认值 用法
仅参数 false 如果指定,-- 之后的所有内容将作为 Args 传递给新容器,而不是作为 Command。
附加 false 如果为 true,则等待容器开始运行,然后像调用 'kubectl attach ...' 一样进行附加。默认为 false,除非设置了 '-i/--stdin',在这种情况下,默认值为 true。
容器 c 用于调试容器的容器名称。
复制到 使用此名称创建目标 Pod 的副本。
环境变量 [] 要在容器中设置的环境变量。
镜像 用于调试容器的容器镜像。
镜像拉取策略 容器的镜像拉取策略。如果留空,则此值将不由客户端指定,而是由服务器默认设置。
静默 q false 如果为 true,则禁止显示信息性消息。
替换 false 与 '--copy-to' 一起使用时,删除原始 Pod。
同一节点 false 与 '--copy-to' 一起使用时,在同一节点上调度目标 Pod 的副本。
设置镜像 [] 与 '--copy-to' 一起使用时,用于更改容器镜像的 name=image 对的列表,类似于 'kubectl set image' 的工作方式。
共享进程 true 与 '--copy-to' 一起使用时,在副本中启用进程命名空间共享。
标准输入 i false 即使没有附加任何内容,也保持 Pod 中容器上的 stdin 打开。
目标 当使用临时容器时,在此容器名称中定位进程。
终端 t false 为调试容器分配一个 TTY。

差异

比较 pod.json 中包含的资源

kubectl diff -f pod.json

比较从 stdin 读取的文件

cat service.yaml | kubectl diff -f -

比较当前在线配置与应用后的配置之间的文件名称或 stdin 指定的配置。

输出始终为 YAML。

可以使用 KUBECTL_EXTERNAL_DIFF 环境变量来选择您自己的 diff 命令。用户也可以使用带参数的外部命令,例如:KUBECTL_EXTERNAL_DIFF="colordiff -N -u"

默认情况下,您路径中可用的 "diff" 命令将使用 "-u" (统一差异) 和 "-N" (将不存在的文件视为空) 选项运行。

退出状态:0 未找到差异。1 找到了差异。>1 Kubectl 或 diff 失败并出现错误。

注意:如果使用 KUBECTL_EXTERNAL_DIFF,则应遵循该约定。

用法

$ kubectl diff -f FILENAME

标志

名称 简写 默认值 用法
字段管理器 kubectl-client-side-apply 用于跟踪字段所有权的管理器的名称。
文件名 f [] 包含要比较的配置的文件名、目录或 URL
force-conflicts false 如果为 true,则服务器端应用将强制针对冲突进行更改。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
server-side false 如果为 true,则 apply 在服务器上而不是在客户端上运行。

编辑

编辑名为 '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)

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
字段管理器 kubectl-edit 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于编辑资源的文件的文件名、目录或 URL
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
输出补丁 false 如果资源被编辑,则输出补丁。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入
Windows 行尾 false 默认为你的平台原生的行尾。

自定义

构建当前工作目录

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

标志

名称 简写 默认值 用法
以当前用户身份 false 使用命令执行器的 uid 和 gid 在容器中运行函数
启用 alpha 插件 false 启用 kustomize 插件
启用 helm false 启用 Helm chart inflator 生成器的使用。
启用 managedby 标签 false 启用添加 app.kubernetes.io/managed-by
环境变量 e [] 供函数使用的一系列环境变量
helm 命令 helm helm 命令(可执行文件的路径)
加载限制器 LoadRestrictionsRootOnly 如果设置为 'LoadRestrictionsNone',则本地 kustomizations 可以从其根目录外部加载文件。但是,这会破坏 kustomization 的可重定位性。
挂载 [] 从文件系统读取的一系列存储选项
网络 false 为声明它的函数启用网络访问
网络名称 桥接 运行容器的 docker 网络
输出 o 如果指定,将输出写入此路径。
重新排序 旧版 在输出之前重新排序资源。使用 'legacy' 应用旧版重新排序(命名空间优先,Webhooks 最后等等)。使用 'none' 来禁止最终重新排序。

标签

使用标签 '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

更新 pod 'foo',如果存在则删除名为 'bar' 的标签 # 不需要 --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 选择指定资源类型命名空间中的所有资源,包括未初始化的资源
all-namespaces A false 如果为 true,请检查所有命名空间中的指定操作。
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-label 用于跟踪字段所有权的管理器的名称。
field-selector 用于筛选的选择器(字段查询),支持“=”、“==”和“!=”。(例如 --field-selector key1=value1,key2=value2)。服务器每种类型仅支持有限数量的字段查询。
文件名 f [] 用于标识要更新标签的资源的文件名、目录或 URL
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
列表 false 如果为 true,则显示给定资源的标签。
local false 如果为 true,则标签将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite false 如果为 true,则允许覆盖标签,否则拒绝覆盖现有标签的标签更新。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
resource-version 如果非空,则仅当这是对象的当前资源版本时,标签更新才会成功。仅在指定单个资源时有效。
选择器 l 用于筛选的 Selector(标签查询),不包括未初始化的资源,支持“=”、“==”和“!=”。(例如 -l key1=value1,key2=value2)。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

补丁

使用战略合并补丁部分更新节点,将补丁指定为 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]

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-patch 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于标识要更新的资源的文件名、目录或 URL
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
local false 如果为 true,则补丁将对文件的内容进行操作,而不是对服务器端资源进行操作。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
补丁 p 要应用于资源 JSON 文件的补丁。
补丁文件 包含要应用于资源的补丁的文件。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
type 战略 提供的补丁的类型;[json 合并 战略] 之一

替换

使用 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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
级联 后台 必须是“background”、“orphan”或“foreground”。为依赖项(例如,由 ReplicationController 创建的 Pod)选择删除级联策略。默认为 background。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-replace 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于替换资源。
强制 false 如果为 true,则立即从 API 中删除资源并绕过优雅删除。请注意,立即删除某些资源可能会导致不一致或数据丢失,并且需要确认。
宽限期 -1 给予资源优雅终止的时间段(以秒为单位)。如果为负数,则忽略。设置为 1 表示立即关闭。只有当 --force 为 true(强制删除)时,才能设置为 0。
自定义 k 处理 kustomization 目录。此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
原始 要 PUT 到服务器的原始 URI。使用 kubeconfig 文件指定的传输。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
保存配置 false 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您想在将来对此对象执行 kubectl apply 时,此标志很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
超时 0s 放弃删除之前等待的时间长度,零表示从对象的大小确定超时时间
验证 true 如果为 true,则在发送之前使用架构来验证输入
等待 false 如果为 true,则在返回之前等待资源消失。这将等待终结器。

滚动更新

回滚到上一个部署

kubectl rollout undo deployment/abc

检查守护进程集的滚动状态

kubectl rollout status daemonset/foo

管理资源的滚动。

有效的资源类型包括

用法

$ kubectl rollout SUBCOMMAND


历史

查看部署的滚动历史

kubectl rollout history deployment/abc

查看守护进程集修订版 3 的详细信息

kubectl rollout history daemonset/abc --revision=3

查看之前的滚动修订版和配置。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
修订版 0 查看指定修订版的详细信息,包括 podTemplate
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

暂停

将 nginx 部署标记为已暂停 # 部署的任何当前状态将继续其功能;只要部署暂停,# 对部署的新更新将不起作用

kubectl rollout pause deployment/nginx

将提供的资源标记为已暂停。

暂停的资源将不会被控制器协调。使用 "kubectl rollout resume" 恢复暂停的资源。目前只有部署支持暂停。

用法

$ kubectl rollout pause RESOURCE

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
字段管理器 kubectl-rollout 用于跟踪字段所有权的管理器的名称。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

重启

重启部署

kubectl rollout restart deployment/nginx

重启守护进程集

kubectl rollout restart daemonset/abc

重启资源。

资源滚动将重新启动。

用法

$ kubectl rollout restart RESOURCE

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
字段管理器 kubectl-rollout 用于跟踪字段所有权的管理器的名称。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

恢复

恢复已暂停的部署

kubectl rollout resume deployment/nginx

恢复暂停的资源。

暂停的资源将不会被控制器协调。通过恢复资源,我们允许再次对其进行协调。目前只有部署支持恢复。

用法

$ kubectl rollout resume RESOURCE

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
字段管理器 kubectl-rollout 用于跟踪字段所有权的管理器的名称。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

状态

观察部署的滚动状态

kubectl rollout status deployment/nginx

显示滚动的状态。

默认情况下,'rollout status' 将监视最新滚动的状态,直到完成。如果您不想等待滚动完成,则可以使用 --watch=false。请注意,如果在其间启动新的滚动,则 'rollout status' 将继续监视最新修订版。如果您想固定到特定修订版,并且如果被另一个修订版覆盖则中止,请使用 --revision=N,其中 N 是您需要监视的修订版。

用法

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

标志

名称 简写 默认值 用法
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
修订版 0 固定到特定修订版以显示其状态。默认为 0(上次修订版)。
超时 0s 在结束监视之前等待的时间长度,零表示永不。任何其他值都应包含相应的时间单位(例如,1s、2m、3h)。
监视 w true 监视滚动的状态,直到完成。

撤销

回滚到上一个部署

kubectl rollout undo deployment/abc

回滚到守护进程集修订版 3

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

使用 dry-run 回滚到上一个部署

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

回滚到之前的滚动。

用法

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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
到修订版 0 要回滚到的修订版。默认为 0(上次修订版)。

伸缩

将名为 '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' 的有状态集扩容到 3

kubectl scale --replicas=3 statefulset/web

为部署、副本集、复制控制器或有状态集设置新的大小。

扩容还允许用户为扩容操作指定一个或多个前提条件。

如果指定了 --current-replicas 或 --resource-version,则在尝试扩容之前会进行验证,并保证在将扩容发送到服务器时,前提条件成立。

用法

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

标志

名称 简写 默认值 用法
all false 选择指定资源类型的命名空间中的所有资源
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
current-replicas -1 当前大小的前提条件。要求资源的当前大小与此值匹配才能进行扩容。-1(默认)表示没有条件。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
文件名 f [] 用于标识要设置新大小的资源的文件、目录或 URL
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
副本 0 新的期望副本数。必需。
resource-version 资源版本的前提条件。要求当前资源版本与此值匹配才能进行扩容。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
超时 0s 在放弃扩容操作之前等待的时间长度,零表示不等待。任何其他值都应包含相应的时间单位(例如 1s、2m、3h)。

设置

配置应用程序资源。

这些命令可帮助您更改现有应用程序资源。

用法

$ kubectl set SUBCOMMAND


环境变量

使用新的环境变量更新部署 '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 读取环境变量。

可能的资源包括(不区分大小写)

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,则选择指定资源类型命名空间中的所有资源
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
containers c * 要更改的所选 Pod 模板中的容器名称 - 可以使用通配符
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
环境变量 e [] 为要设置到每个容器中的环境变量指定键值对。
字段管理器 kubectl-set 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于更新 env 的资源的文件、目录或 URL
来自 从中注入环境变量的资源名称
keys [] 要从指定资源导入的键的逗号分隔列表
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
列表 false 如果为 true,则以标准格式显示环境和任何更改。当我们有 kubectl view env 时,此标志将被删除。
local false 如果为 true,则 set env 将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite true 如果为 true,则允许覆盖环境,否则会拒绝覆盖现有环境的更新。
prefix 附加到变量名称的前缀
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
resolve false 如果为 true,则在列出变量时显示 Secret 或 ConfigMap 引用
选择器 l 用于筛选的选择器(标签查询)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

镜像

将部署的 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

更新资源的现有容器镜像。

可能的资源包括(不区分大小写)

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 选择指定资源类型命名空间中的所有资源,包括未初始化的资源
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-set 用于跟踪字段所有权的管理器的名称。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
local false 如果为 true,则 set image 将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),不包括未初始化的,支持 '='、'==' 和 '!='。(例如,-l key1=value1,key2=value2)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

资源

将部署的 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 选择指定资源类型命名空间中的所有资源,包括未初始化的资源
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
containers c * 要更改的所选 Pod 模板中的容器名称,默认情况下会选择所有容器 - 可以使用通配符
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-set 用于跟踪字段所有权的管理器的名称。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
限制 此容器的资源需求请求。例如,'cpu=100m,memory=256Mi'。请注意,服务器端组件可能会根据服务器配置(例如,限制范围)分配请求。
local false 如果为 true,则 set resources 将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
请求 此容器的资源需求请求。例如,'cpu=100m,memory=256Mi'。请注意,服务器端组件可能会根据服务器配置(例如,限制范围)分配请求。
选择器 l 用于筛选的选择器(标签查询),不包括未初始化的,支持 '='、'==' 和 '!='。(例如,-l key1=value1,key2=value2)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

选择器

在创建部署/服务对之前设置标签和选择器

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 选择指定资源类型的命名空间中的所有资源
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-set 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于标识资源。
local false 如果为 true,则注释将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R true 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
resource-version 如果非空,则仅当这是对象的当前资源版本时,选择器更新才会成功。仅在指定单个资源时有效。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

服务账号

将部署 nginx-deployment 的服务帐户设置为 serviceaccount1

kubectl set serviceaccount deployment nginx-deployment serviceaccount1

从本地文件更新带有服务帐户的 Nginx 部署的打印结果(以 YAML 格式),无需访问 API 服务器

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

更新 Pod 模板资源的 Service Account。

可能的资源(不区分大小写)可以是

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

用法

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

标志

名称 简写 默认值 用法
all false 选择指定资源类型命名空间中的所有资源,包括未初始化的资源
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-set 用于跟踪字段所有权的管理器的名称。
文件名 f [] 文件名、目录或 URL,用于从服务器获取资源的标识。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
local false 如果为 true,则 set serviceaccount 将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
记录 false 在资源注释中记录当前的 kubectl 命令。 如果设置为 false,则不记录命令。 如果设置为 true,则记录命令。 如果未设置,则默认为仅在已存在注释值时更新现有注释值。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

主题

更新 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 选择指定资源类型命名空间中的所有资源,包括未初始化的资源
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-set 用于跟踪字段所有权的管理器的名称。
文件名 f [] 用于更新主体的资源的文件、目录或 URL
[] 要绑定到角色的组
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
local false 如果为 true,则 set subject 将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),不包括未初始化的,支持 '='、'==' 和 '!='。(例如,-l key1=value1,key2=value2)
服务账号 [] 要绑定到角色的服务帐户
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

等待

等待 Pod "busybox1" 包含类型为 "Ready" 的状态条件

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

状态条件的默认值为 true;您可以将其设置为 false

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

等待 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 选择指定资源类型的命名空间中的所有资源
all-namespaces A false 如果存在,则列出所有命名空间中请求的对象。即使使用 --namespace 指定,也会忽略当前上下文中的命名空间。
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
field-selector 用于筛选的选择器(字段查询),支持“=”、“==”和“!=”。(例如 --field-selector key1=value1,key2=value2)。服务器每种类型仅支持有限数量的字段查询。
文件名 f [] 用于标识资源。
for 要等待的条件:[delete|condition=condition-name]。condition-name 的默认状态值为 true,您可以使用 condition=condition-name=false 将其设置为 false
local false 如果为 true,则注释将不会联系 api-server,而是在本地运行。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R true 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
超时 30s 放弃之前等待的时间长度。零表示检查一次且不等待,负值表示等待一周。

使用应用

本节包含用于检查和调试您的应用程序的命令。


附加

从正在运行的 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

标志

名称 简写 默认值 用法
容器 c 容器名称。如果省略,则使用 kubectl.kubernetes.io/default-container 注解来选择要附加的容器,否则将选择 Pod 中的第一个容器
Pod 运行超时 1m0s 等待直到至少一个 Pod 运行的时间长度(如 5s、2m 或 3h,大于零)
静默 q false 仅打印来自远程会话的输出
标准输入 i false 将 stdin 传递到容器
终端 t false Stdin 是 TTY

认证

检查授权

用法

$ kubectl auth


我能做吗

检查我是否可以在任何命名空间中创建 Pod

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

检查我是否可以列出我当前命名空间中的部署

kubectl auth can-i list deployments.apps

检查我是否可以在我当前的命名空间中执行所有操作("*" 表示全部)

kubectl auth can-i '*' '*'

检查我是否可以获取命名空间“foo”中名为“bar”的作业

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]

标志

名称 简写 默认值 用法
all-namespaces A false 如果为 true,请检查所有命名空间中的指定操作。
列表 false 如果为 true,则打印所有允许的操作。
no-headers false 如果为 true,则打印允许的操作,不包含标题。
静默 q false 如果为 true,则禁止输出,只返回退出代码。
子资源 子资源,如 pod/log 或 deployment/scale

协调

从文件协调 RBAC 资源

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

协调 RBAC 角色、角色绑定、集群角色和集群角色绑定对象的规则。

如果需要,将创建缺失的对象,并为命名空间对象创建包含命名空间。

现有角色将更新以包含输入对象中的权限,如果指定了 --remove-extra-permissions,则删除额外的权限。

现有绑定将更新以包含输入对象中的主体,如果指定了 --remove-extra-subjects,则删除额外的主体。

对于 RBAC 资源,这比 'apply' 更可取,以便进行语义感知的规则和主体合并。

用法

$ kubectl auth reconcile -f FILENAME

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
文件名 f [] 文件名、目录或 URL,用于标识要协调的资源。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
remove-extra-permissions false 如果为 true,则删除添加到角色的额外权限
remove-extra-subjects false 如果为 true,则删除添加到角色绑定的额外主体
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

复制

!!!重要提示!!! # 要求你的容器镜像中存在 '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>

标志

名称 简写 默认值 用法
容器 c 容器名称。如果省略,则使用 kubectl.kubernetes.io/default-container 注解来选择要附加的容器,否则将选择 Pod 中的第一个容器
no-preserve false 复制的文件/目录的所有权和权限将不会在容器中保留

描述

描述一个节点

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 为前缀的资源的详细信息。

使用“kubectl api-resources”获取支持的资源的完整列表。

用法

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

标志

名称 简写 默认值 用法
all-namespaces A false 如果存在,则列出所有命名空间中请求的对象。即使使用 --namespace 指定,也会忽略当前上下文中的命名空间。
chunk-size 500 分块返回大列表,而不是一次全部返回。传递 0 以禁用。此标志为 beta 版本,将来可能会更改。
文件名 f [] 包含要描述的资源的文件名、目录或 URL
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
show-events true 如果为 true,则显示与描述的对象相关的事件。

执行

从 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), # 则必须使用两个破折号 (--) 分隔命令的标志/参数 # 还要注意,不要用引号将命令及其标志/参数括起来 # 除非这是您通常执行它的方式(即,do ls -t /usr,而不是 "ls -t /usr")

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

从部署 mydeployment 的第一个 pod 运行 'date' 命令,默认使用第一个容器,并获取输出

kubectl exec deploy/mydeployment -- date

从服务 myservice 的第一个 pod 运行 'date' 命令,默认使用第一个容器,并获取输出

kubectl exec svc/myservice -- date

在容器中执行命令。

用法

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

标志

名称 简写 默认值 用法
容器 c 容器名称。如果省略,则使用 kubectl.kubernetes.io/default-container 注解来选择要附加的容器,否则将选择 Pod 中的第一个容器
文件名 f [] 用于 exec 进入资源的类型/名称
Pod 运行超时 1m0s 等待直到至少一个 Pod 运行的时间长度(如 5s、2m 或 3h,大于零)
静默 q false 仅打印来自远程会话的输出
标准输入 i false 将 stdin 传递到容器
终端 t false Stdin 是 TTY

日志

返回只有一个容器的 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 的作业的第一个容器的快照日志

kubectl logs job/hello

返回名为 nginx 的部署的容器 nginx-1 的快照日志

kubectl logs deployment/nginx -c nginx-1

打印 pod 或指定资源中容器的日志。如果 pod 只有一个容器,则容器名称是可选的。

用法

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

标志

名称 简写 默认值 用法
all-containers false 获取 pod 中的所有容器的日志。
容器 c 打印此容器的日志
follow f false 指定是否应流式传输日志。
ignore-errors false 如果正在监视/跟踪 pod 日志,则允许发生的任何错误均为非致命错误
insecure-skip-tls-verify-backend false 跳过验证请求日志的 kubelet 的身份。理论上,攻击者可能会提供无效的日志内容。如果您的 kubelet 服务证书已过期,您可能需要使用此选项。
limit-bytes 0 要返回的最大日志字节数。默认为无限制。
max-log-requests 5 使用选择器时,指定要跟踪的最大并发日志数。默认为 5。
Pod 运行超时 20s 等待直到至少一个 Pod 运行的时间长度(如 5s、2m 或 3h,大于零)
prefix false 在每个日志行前面加上日志源(pod 名称和容器名称)
previous p false 如果为 true,则打印 pod 中容器的先前实例的日志(如果存在)。
选择器 l 要筛选的选择器(标签查询)。
since 0s 仅返回比 5s、2m 或 3h 等相对持续时间更新的日志。默认为所有日志。只能使用 since-time/since 中的一个。
since-time 仅返回特定日期 (RFC3339) 之后的日志。默认为所有日志。只能使用 since-time/since 中的一个。
tail -1 要显示的最近日志文件的行数。默认为 -1(没有选择器),否则显示所有日志行,如果提供了选择器,则显示 10 行。
timestamps false 在日志输出中的每一行都包含时间戳

端口转发

在本地端口 5000 和 6000 上侦听,将数据转发到/从 pod 中的端口 5000 和 6000

kubectl port-forward pod/mypod 5000 6000

在本地端口 5000 和 6000 上侦听,将数据转发到/从由部署选择的 pod 中的端口 5000 和 6000

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,如果这两个地址都不可用进行绑定,则将失败。
Pod 运行超时 1m0s 等待直到至少一个 Pod 运行的时间长度(如 5s、2m 或 3h,大于零)

代理

仅代理整个 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 服务器的代理,从 ./local/www/ 提供静态内容

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

在任意本地端口上运行 Kubernetes API 服务器的代理 # 服务器选择的端口将输出到 stdout

kubectl proxy --port=0

运行 Kubernetes API 服务器的代理,将 API 前缀更改为 k8s-api # 这使得 pod API 可在 localhost:8001/k8s-api/v1/pods/ 上使用

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

在本地主机和 Kubernetes API 服务器之间创建一个代理服务器或应用程序级网关。它还允许通过指定的 HTTP 路径提供静态内容。所有传入数据都通过一个端口进入,并转发到远程 Kubernetes API 服务器端口,但与静态内容路径匹配的路径除外。

用法

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

标志

名称 简写 默认值 用法
accept-hosts ^localhost$,^127.0.0.1$,^[::1]$ 代理应接受的主机的正则表达式。
accept-paths ^.* 代理应接受的路径的正则表达式。
address 127.0.0.1 在其上提供服务的 IP 地址。
api-prefix / 要在其下提供代理 API 的前缀。
disable-filter false 如果为 true,则禁用代理中的请求筛选。这是危险的,并且在使用可访问端口时可能会使您容易受到 XSRF 攻击。
keepalive 0s keepalive 指定活动网络连接的保持活动周期。设置为 0 以禁用保持活动。
端口 p 8001 要在其上运行代理的端口。设置为 0 以选择随机端口。
reject-methods ^$ 代理应拒绝的 HTTP 方法的正则表达式(示例 --reject-methods='POST,PUT,PATCH')。
reject-paths ^/api/./pods/./exec,^/api/./pods/./attach 代理应拒绝的路径的正则表达式。此处指定的路径即使被 --accept-paths 接受也会被拒绝。
unix-socket u 运行代理的 Unix 套接字。
www w 从给定目录下的指定前缀提供静态文件。
www-prefix P /static/ 如果指定了静态文件目录,则提供静态文件的前缀。

顶部

显示资源(CPU/内存)使用情况。

top 命令允许您查看节点或 Pod 的资源消耗。

此命令需要 Metrics Server 在服务器上正确配置并工作。

用法

$ kubectl top


节点

显示所有节点的指标

kubectl top node

显示给定节点的指标

kubectl top node NODE_NAME

显示节点的资源(CPU/内存)使用情况。

top-node 命令允许您查看节点的资源消耗。

用法

$ kubectl top node [NAME | -l label]

标志

名称 简写 默认值 用法
no-headers false 如果存在,则打印不带标题的输出
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
排序依据 如果非空,则使用指定的字段对节点列表进行排序。该字段可以是“cpu”或“memory”。
use-protocol-buffers true 启用使用 protocol-buffers 访问 Metrics API。

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]

标志

名称 简写 默认值 用法
all-namespaces A false 如果存在,则列出所有命名空间中请求的对象。即使使用 --namespace 指定,也会忽略当前上下文中的命名空间。
containers false 如果存在,则打印 Pod 中容器的使用情况。
field-selector 用于筛选的选择器(字段查询),支持“=”、“==”和“!=”。(例如 --field-selector key1=value1,key2=value2)。服务器每种类型仅支持有限数量的字段查询。
no-headers false 如果存在,则打印不带标题的输出。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
排序依据 如果非空,则使用指定的字段对 Pod 列表进行排序。该字段可以是“cpu”或“memory”。
use-protocol-buffers true 启用使用 protocol-buffers 访问 Metrics API。

集群管理


API 版本

打印支持的 API 版本

kubectl api-versions

以 "group/version" 的形式打印服务器上支持的 API 版本。

用法

$ kubectl api-versions


证书

修改证书资源。

用法

$ kubectl certificate SUBCOMMAND


批准

批准 CSR 'csr-sqgzp'

kubectl certificate approve csr-sqgzp

批准证书签名请求。

kubectl certificate approve 允许集群管理员批准证书签名请求 (CSR)。 此操作指示证书签名控制器向请求者颁发带有 CSR 中请求的属性的证书。

安全注意事项:根据请求的属性,颁发的证书可能会授予请求者访问集群资源或以请求的身份进行身份验证的权限。 在批准 CSR 之前,请确保您了解签名的证书可以执行哪些操作。

用法

$ kubectl certificate approve (-f FILENAME | NAME)

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
文件名 f [] 用于标识要更新的资源的文件名、目录或 URL
强制 false 即使 CSR 已被批准,也更新 CSR。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

拒绝

拒绝 CSR 'csr-sqgzp'

kubectl certificate deny csr-sqgzp

拒绝证书签名请求。

kubectl certificate deny 允许集群管理员拒绝证书签名请求 (CSR)。此操作指示证书签名控制器不向请求者颁发证书。

用法

$ kubectl certificate deny (-f FILENAME | NAME)

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
文件名 f [] 用于标识要更新的资源的文件名、目录或 URL
强制 false 即使 CSR 已被拒绝,也更新 CSR。
自定义 k 处理 kustomization 目录。 此标志不能与 -f 或 -R 一起使用。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
递归 R false 递归处理 -f、--filename 中使用的目录。 当您要管理在同一目录中组织的相关的清单时很有用。
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

集群信息

打印控制平面和集群服务的地址

kubectl cluster-info

显示控制平面和标签为 kubernetes.io/cluster-service=true 的服务的地址。要进一步调试和诊断集群问题,请使用“kubectl cluster-info dump”。

用法

$ kubectl cluster-info


转储

将当前集群状态转储到 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

标志

名称 简写 默认值 用法
all-namespaces A false 如果为 true,则转储所有命名空间。如果为 true,则忽略 --namespaces。
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
namespaces [] 要转储的以逗号分隔的命名空间列表。
输出 o json 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
output-directory 输出文件的位置。如果为空或“-”则使用 stdout,否则在该目录中创建目录层次结构
Pod 运行超时 20s 等待直到至少一个 Pod 运行的时间长度(如 5s、2m 或 3h,大于零)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

封锁

将节点“foo”标记为不可调度

kubectl cordon foo

将节点标记为不可调度。

用法

$ kubectl cordon NODE

标志

名称 简写 默认值 用法
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
选择器 l 用于筛选的选择器(标签查询)

腾空

排空节点“foo”,即使其上存在不受复制控制器、副本集、作业、守护进程集或有状态集管理的 Pod

kubectl drain foo --force

与上述相同,但如果存在不受复制控制器、副本集、作业、守护进程集或有状态集管理的 Pod,则中止,并使用 15 分钟的宽限期

kubectl drain foo --grace-period=900

排空节点以准备维护。

给定的节点将被标记为不可调度,以防止新的 Pod 到达。“drain”会驱逐 Pod(如果 API 服务器支持 https://kubernetes.ac.cn/docs/concepts/workloads/pods/disruptions/)。否则,它将使用正常的 DELETE 删除 Pod。“drain”会驱逐或删除除镜像 Pod 之外的所有 Pod(镜像 Pod 无法通过 API 服务器删除)。 如果存在守护进程集管理的 Pod,则在没有 --ignore-daemonsets 的情况下,排空将不会继续,并且无论如何都不会删除任何守护进程集管理的 Pod,因为这些 Pod 会立即被守护进程集控制器替换,而守护进程集控制器会忽略不可调度标记。如果存在任何既不是镜像 Pod 又不受复制控制器、副本集、守护进程集、有状态集或作业管理的 Pod,则除非使用 --force,否则排空将不会删除任何 Pod。如果一个或多个 Pod 的管理资源缺失,--force 也允许删除继续进行。

“drain”会等待正常终止。在命令完成之前,您不应在该计算机上进行操作。

当您准备好将节点重新投入使用时,请使用 kubectl uncordon,这将使节点再次可调度。

https://kubernetes.ac.cn/images/docs/kubectl_drain.svg

用法

$ kubectl drain NODE

标志

名称 简写 默认值 用法
chunk-size 500 分块返回大列表,而不是一次全部返回。传递 0 以禁用。此标志为 beta 版本,将来可能会更改。
delete-emptydir-data false 即使存在使用 emptyDir 的 Pod(当节点被排空时将被删除的本地数据),也继续进行。
delete-local-data false 即使存在使用 emptyDir 的 Pod(当节点被排空时将被删除的本地数据),也继续进行。
disable-eviction false 强制 drain 使用 delete,即使支持驱逐也是如此。 这将绕过检查 PodDisruptionBudgets,请谨慎使用。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
强制 false 即使存在不受 ReplicationController、ReplicaSet、Job、DaemonSet 或 StatefulSet 管理的 Pod,也继续进行。
宽限期 -1 给予每个 Pod 正常终止的时间(以秒为单位)。 如果为负数,将使用 Pod 中指定的默认值。
ignore-daemonsets false 忽略守护进程集管理的 Pod。
ignore-errors false 忽略组中排空节点之间发生的错误。
pod-selector 用于筛选节点上 Pod 的标签选择器
选择器 l 用于筛选的选择器(标签查询)
skip-wait-for-delete-timeout 0 如果 Pod 的 DeletionTimestamp 早于 N 秒,则跳过等待 Pod。秒数必须大于 0 才能跳过。
超时 0s 放弃等待的时间长度,零表示无限

污点

使用键“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 选择集群中的所有节点
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
字段管理器 kubectl-taint 用于跟踪字段所有权的管理器的名称。
输出 o 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
overwrite false 如果为 true,则允许覆盖污点,否则拒绝覆盖现有污点的污点更新。
选择器 l 用于筛选的选择器(标签查询),支持“=”、“==”和“!=”。(例如,-l key1=value1,key2=value2)
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]
验证 true 如果为 true,则在发送之前使用架构来验证输入

解除封锁

将节点“foo”标记为可调度

kubectl uncordon foo

将节点标记为可调度。

用法

$ kubectl uncordon NODE

标志

名称 简写 默认值 用法
dry-run none 必须为“none”、“server”或“client”。 如果客户端策略,则仅打印将要发送的对象,而不发送它。 如果服务器策略,则提交服务器端请求而不持久化资源。
选择器 l 用于筛选的选择器(标签查询)

KUBECTL 设置和用法


Alpha

这些命令对应于默认情况下在 Kubernetes 集群中未启用的 alpha 功能。

用法

$ kubectl alpha


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,则将返回非命名空间资源,否则默认返回命名空间资源。
no-headers false 当使用默认或自定义列输出格式时,请勿打印标头(默认打印标头)。
输出 o 输出格式。以下之一:wide|name。
排序依据 如果非空,则使用指定的字段对资源列表进行排序。该字段可以是“name”或“kind”。
verbs [] 限制为支持指定动词的资源。

补全

在 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.ac.cn/docs/tasks/tools/install-kubectl-macos/#enable-shell-autocompletion

对于 Linux:https://kubernetes.ac.cn/docs/tasks/tools/install-kubectl-linux/#enable-shell-autocompletion

对于 Windows:https://kubernetes.ac.cn/docs/tasks/tools/install-kubectl-windows/#enable-shell-autocompletion

zsh 用户注意事项:[1]仅在 zsh >= 5.2 的版本中支持 zsh 补全。

用法

$ kubectl completion SHELL


配置

使用诸如“kubectl config set current-context my-context”之类的子命令修改 kubeconfig 文件

加载顺序遵循以下规则

  1. 如果设置了 --kubeconfig 标志,则仅加载该文件。该标志只能设置一次,并且不会进行合并。
  2. 如果设置了 $KUBECONFIG 环境变量,则将其用作路径列表(适用于您的系统的正常路径分隔规则)。这些路径将被合并。当值被修改时,它将在定义节的文件中被修改。当值被创建时,它将在第一个存在的文件中被创建。如果链中的任何文件都不存在,则它会创建列表中的最后一个文件。
  3. 否则,将使用 ${HOME}/.kube/config 并且不进行合并。

用法

$ kubectl config SUBCOMMAND


当前上下文

显示当前上下文

kubectl config current-context

显示当前上下文。

用法

$ kubectl config current-context


删除集群

删除 minikube 集群

kubectl config delete-cluster minikube

从 kubeconfig 中删除指定的集群。

用法

$ kubectl config delete-cluster NAME


删除上下文

删除 minikube 集群的上下文

kubectl config delete-context minikube

从 kubeconfig 中删除指定的上下文。

用法

$ kubectl config delete-context NAME


删除用户

删除 minikube 用户

kubectl config delete-user minikube

从 kubeconfig 中删除指定的用户。

用法

$ kubectl config delete-user NAME


获取集群

列出 kubectl 知道的集群

kubectl config get-clusters

显示 kubeconfig 中定义的集群。

用法

$ kubectl config get-clusters


获取上下文

列出 kubeconfig 文件中的所有上下文

kubectl config get-contexts

描述 kubeconfig 文件中的一个上下文

kubectl config get-contexts my-context

显示 kubeconfig 文件中的一个或多个上下文。

用法

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

标志

名称 简写 默认值 用法
no-headers false 当使用默认或自定义列输出格式时,请勿打印标头(默认打印标头)。
输出 o 输出格式。可以是:name

获取用户

列出 kubectl 知道的用户

kubectl config get-users

显示 kubeconfig 中定义的用户。

用法

$ kubectl config get-users


重命名上下文

在 kubeconfig 文件中将上下文 'old-name' 重命名为 'new-name'

kubectl config rename-context old-name new-name

从 kubeconfig 文件中重命名上下文。

CONTEXT_NAME 是你要更改的上下文名称。

NEW_NAME 是你要设置的新名称。

注意:如果要重命名的上下文是 'current-context',此字段也将被更新。

用法

$ kubectl config rename-context CONTEXT_NAME NEW_NAME


设置

将 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 上下文中的 cluster 字段设置为 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 是你要设置的新值。二进制字段(如 'certificate-authority-data')需要 base64 编码的字符串,除非使用 --set-raw-bytes 标志。

指定已存在的属性名称会将新字段合并到现有值之上。

用法

$ kubectl config set PROPERTY_NAME PROPERTY_VALUE

标志

名称 简写 默认值 用法
set-raw-bytes false 当写入一个 []字节的 PROPERTY_VALUE 时,直接写入给定的字符串,不进行 base64 解码。

设置集群

仅设置 e2e 集群条目的 server 字段,不更改其他值

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

设置用于验证 e2e 集群条目的自定义 TLS 服务器名称

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 中的集群条目嵌入证书

设置上下文

仅设置 gce 上下文条目的 user 字段,不更改其他值

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

在 kubeconfig 中设置上下文条目。

指定已存在的名称会将新字段合并到这些字段的现有值之上。

用法

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

标志

名称 简写 默认值 用法
current false 修改当前上下文

设置凭证

仅设置 "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

Bearer 令牌标志:--token=bearer_token

基本身份验证标志:--username=basic_user --password=basic_password

Bearer 令牌和基本身份验证是互斥的。

用法

$ 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' 环境变量值

取消设置

取消设置当前上下文

kubectl config unset current-context

取消设置 foo 上下文中的命名空间

kubectl config unset contexts.foo.namespace

在 kubeconfig 文件中取消设置单个值。

PROPERTY_NAME 是一个点分隔的名称,其中每个标记表示属性名称或映射键。映射键不能包含点。

用法

$ kubectl config unset PROPERTY_NAME


使用上下文

使用 minikube 集群的上下文

kubectl config use-context minikube

在 kubeconfig 文件中设置当前上下文。

用法

$ kubectl config use-context CONTEXT_NAME


查看

显示合并的 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

标志

名称 简写 默认值 用法
允许缺失模板键 true 如果为 true,则在模板中缺少字段或映射键时,忽略模板中的任何错误。仅适用于 golang 和 jsonpath 输出格式。
flatten false 将生成的 kubeconfig 文件展平为自包含的输出(对于创建可移植的 kubeconfig 文件很有用)
merge true 合并 kubeconfig 文件的完整层次结构
minify false 从输出中删除当前上下文未使用的所有信息
输出 o yaml 输出格式。 其中之一:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。
原始 false 显示原始字节数据
显示托管字段 false 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留托管字段。
模板 当 -o=go-template、-o=go-template-file 时要使用的模板字符串或模板文件路径。 模板格式是 golang 模板 [https://golang.ac.cn/pkg/text/template/#pkg-overview]

解释

获取资源及其字段的文档

kubectl explain pods

获取资源的特定字段的文档

kubectl explain pods.spec.containers

列出受支持资源的字段。

此命令描述与每个受支持的 API 资源关联的字段。字段通过简单的 JSONPath 标识符标识

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

添加 --recursive 标志以一次显示所有字段,而不显示描述。有关每个字段的信息以 OpenAPI 格式从服务器检索。

使用“kubectl api-resources”获取支持的资源的完整列表。

用法

$ kubectl explain RESOURCE

标志

名称 简写 默认值 用法
api-version 获取特定 API 版本(API 组/版本)的不同解释
递归 false 打印字段的字段(目前只有 1 层深度)

选项

打印所有命令继承的标志

kubectl options

打印所有命令继承的标志列表

用法

$ kubectl options


插件

提供用于与插件交互的实用程序。

插件提供不是主要命令行发行版一部分的扩展功能。有关如何编写自己的插件的更多信息,请参阅文档和示例。

发现和安装插件的最简单方法是通过 Kubernetes 子项目 krew。要安装 krew,请访问 https://krew.kubernetes.ac.cn/docs/user-guide/setup/install/

用法

$ kubectl plugin [flags]


列表

列出用户 PATH 上的所有可用插件文件。

可用的插件文件是: - 可执行文件 - 位于用户 PATH 上的任何位置 - 以 "kubectl-" 开头

用法

$ kubectl plugin list

标志

名称 简写 默认值 用法
name-only false 如果为 true,则只显示每个插件的二进制名称,而不是其完整路径

版本

打印当前上下文的客户端和服务器版本

kubectl version

打印当前上下文的客户端和服务器版本信息。

用法

$ kubectl version

标志

名称 简写 默认值 用法
client false 如果为 true,则仅显示客户端版本(不需要服务器)。
输出 o 可以是 'yaml' 或 'json'。
short false 如果为 true,则只打印版本号。