本节包含在您的集群上运行工作负载的最基本命令。
run
将在您的集群上开始运行一个或多个容器镜像实例。expose
将在运行的实例之间负载均衡流量,并且可以创建一个高可用代理以从集群外部访问容器。一旦您的工作负载正在运行,您可以使用使用应用部分中的命令来检查它们。
使用 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,则在发送之前使用架构来验证输入 |
创建一个名为 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
如果你还没有 .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,则在发送之前使用架构来验证输入 |
创建一个名为 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-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
创建一个名为 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,则在发送之前使用架构来验证输入 |
创建一个名为 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,则在发送之前使用架构来验证输入 |
创建一个名为 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,则在发送之前使用架构来验证输入 |
创建一个名为 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 | 放弃之前等待的时间长度。零表示检查一次且不等待,负值表示等待一周。 |
本节包含用于检查和调试您的应用程序的命令。
logs
将打印指定 Pod + 容器的日志。exec
可用于在 Pod + 容器上获取交互式 Shell。describe
将打印有关给定资源的调试信息。从正在运行的 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 的指标
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 版本
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 | 用于筛选的选择器(标签查询) |
这些命令对应于默认情况下在 Kubernetes 集群中未启用的 alpha 功能。
$ kubectl alpha
打印支持的 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 文件
加载顺序遵循以下规则
$ 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,则只打印版本号。 |