kubectl delete
简介
基于文件名、标准输入、资源和名称,或基于资源和标签选择算符来删除资源。
接受 JSON 和 YAML 格式。只能指定一种类型的参数:文件名、资源加名称,或资源加标签选择算符。
某些资源(如 Pod)支持体面删除。这些资源定义了在强制终止之前的默认时长(宽限期), 但你可以使用 --grace-period 标志覆盖该值,或传递 --now 将宽限期设置为 1。 由于这些资源通常代表集群中的实体,所以删除可能不会立即得到确认。 如果托管 Pod 的节点宕机或无法访问 API 服务器,则终止所用的时间可能比宽限期长得多。 要强制删除某资源,你必须指定 --force 标志。 注意:只有一部分资源支持体面删除。如果不支持体面删除,--grace-period 标志将被忽略。
重要提示:强制删除 Pod 不会等待确认 Pod 的进程已被终止, 这可能会导致直到节点检测到删除请求并完成体面删除之前,Pod 中的进程一直继续运行。 如果你的进程使用共享存储或与远程 API 通信并依赖 Pod 的名称来标识自己,强制删除这些 Pod 可能会导致在不同机器上运行的多个进程使用相同的标识,从而可能导致数据损坏或不一致。 只有在你确定 Pod 已被终止或你的应用可以容忍同时运行相同 Pod 的多个副本时,才可以强制删除 Pod。 此外,如果你强制删除 Pod,调度器可能会在节点释放这些资源之前在这些节点上调度新的 Pod,从而使得 Pod 被立即驱逐。
请注意,删除命令不会检查资源版本,因此如果有人在你提交删除指令时提交了资源更新指令, 他们的更新请求将与剩余的资源一起丢失。
在 CustomResourceDefinition 被删除之后,对发现缓存的的刷新可能需要长达 6 小时的时长。 如果你不想等待,可以运行 "kubectl api-resources" 来刷新发现缓存。
kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)])
示例
# 使用 pod.json 中指定的类型和名称删除一个 Pod
kubectl delete -f ./pod.json
# 基于包含 kustomization.yaml 的目录(例如 dir/kustomization.yaml)中的内容删除资源
kubectl delete -k dir
# 删除所有以 '.json' 结尾的文件中的资源
kubectl delete -f '*.json'
# 基于传递到标准输入的 JSON 中的类型和名称删除一个 Pod
cat pod.json | kubectl delete -f -
# 删除名称为 "baz" 和 "foo" 的 Pod 和 Service
kubectl delete pod,service baz foo
# 删除打了标签 name=myLabel 的 Pod 和 Service
kubectl delete pods,services -l name=myLabel
# 以最小延迟删除一个 Pod
kubectl delete pod foo --now
# 强制删除一个死节点上的 Pod
kubectl delete pod foo --force
# 删除所有 Pod
kubectl delete pods --all
# 仅在用户确认删除的情况下删除所有 Pod
kubectl delete pods --all --interactive
选项
--all | |
删除指定资源类型的命名空间中的所有资源。 |
|
-A, --all-namespaces | |
如果存在,则列举所有命名空间中请求的对象。 即使使用 --namespace 指定,当前上下文中的命名空间也会被忽略。 |
|
--cascade string[="background"] 默认值:"background" | |
必须是 "background"、"orphan" 或 "foreground"。 选择依赖项(例如,由 ReplicationController 创建的 Pod)的删除级联策略, 默认为 background。 |
|
--dry-run string[="unchanged"] 默认值:"none" | |
必须是 "none"、"server" 或 "client"。如果是 client 策略,仅打印将要发送的对象,而不实际发送。 如果是 server 策略,提交服务器端请求而不持久化资源。 |
|
--field-selector string | |
过滤所用的选择算符(字段查询),支持 '='、'==' 和 '!='。 (例如 --field-selector key1=value1,key2=value2)。服务器针对每种类型仅支持有限数量的字段查询。 |
|
-f, --filename strings | |
包含要删除的资源的文件名。 |
|
--force | |
如果为真,则立即从 API 中移除资源并略过体面删除处理。 请注意,立即删除某些资源可能会导致不一致或数据丢失,并且需要确认操作。 |
|
--grace-period int 默认值:-1 | |
指定给资源的体面终止时间(以秒为单位)。 如果为负数则忽略,为 1 表示立即关闭。 仅当 --force 为真(强制删除)时才可以设置为 0。 |
|
-h, --help | |
delete 操作的帮助命令。 |
|
--ignore-not-found | |
将 “resource not found” 视为成功删除。当指定 --all 参数时,默认值为 “true”。 |
|
-i, --interactive | |
如果为 true,仅在用户确认时删除资源。 |
|
-k, --kustomize string | |
处理 kustomization 目录,此标志不能与 -f 或 -R 一起使用。 |
|
--now | |
如果为 true,资源将被标记为立即关闭(等同于 --grace-period=1)。 |
|
-o, --output string | |
输出模式。使用 “-o name” 以获得更简短的输出(resource/name)。 |
|
--raw string | |
向服务器发送 DELETE 请求所用的原始 URI。使用 kubeconfig 文件中指定的传输方式。 |
|
-R, --recursive | |
递归处理在 -f、--filename 中给出的目录。当你想要管理位于同一目录中的相关清单时很有用。 |
|
-l, --selector string | |
过滤所用的选择算符(标签查询),支持 '='、'=='、'!='、'in' 和 'notin'。
(例如 |
|
--timeout duration | |
放弃删除之前等待的时间长度,为 0 表示根据对象的大小确定超时。 |
|
--wait 默认值:true | |
如果为 true,则等待资源消失后再返回。此参数会等待终结器被清空。 |
Parent Options Inherited
--as string | |
操作所用的伪装用户名。用户可以是常规用户或命名空间中的服务账号。 |
|
--as-group strings | |
操作所用的伪装用户组,此标志可以被重复设置以指定多个组。 |
|
--as-uid string | |
操作所用的伪装 UID。 |
|
--cache-dir string 默认值:"$HOME/.kube/cache" | |
默认缓存目录。 |
|
--certificate-authority string | |
证书机构的证书文件的路径。 |
|
--client-certificate string | |
TLS 客户端证书文件的路径。 |
|
--client-key string | |
TLS 客户端密钥文件的路径。 |
|
--cluster string | |
要使用的 kubeconfig 集群的名称。 |
|
--context string | |
要使用的 kubeconfig 上下文的名称。 |
|
--disable-compression | |
如果为 true,则对服务器所有请求的响应不再压缩。 |
|
--insecure-skip-tls-verify | |
如果为 true,则不检查服务器证书的有效性。这将使你的 HTTPS 连接不安全。 |
|
--kubeconfig string | |
CLI 请求要使用的 kubeconfig 文件的路径。 |
|
--match-server-version | |
要求服务器版本与客户端版本匹配。 |
|
-n, --namespace string | |
如果存在,则是此 CLI 请求的命名空间范围。 |
|
--password string | |
向 API 服务器进行基本身份验证所用的密码。 |
|
--profile string 默认值:"none" | |
要记录的性能分析信息。可选值为(none|cpu|heap|goroutine|threadcreate|block|mutex)。 |
|
--profile-output string 默认值:"profile.pprof" | |
性能分析信息要写入的目标文件的名称。 |
|
--request-timeout string 默认值:"0" | |
在放弃某个服务器请求之前等待的时长。非零值应包含相应的时间单位(例如 1s、2m、3h)。 值为零表示请求不会超时。 |
|
-s, --server string | |
Kubernetes API 服务器的地址和端口。 |
|
--storage-driver-buffer-duration duration 默认值:1m0s | |
对存储驱动的写入操作将被缓存的时长;缓存的操作会作为一个事务提交给非内存后端。 |
|
--storage-driver-db string 默认值:"cadvisor" | |
数据库名称。 |
|
--storage-driver-host string 默认值:"localhost:8086" | |
数据库 host:port |
|
--storage-driver-password string 默认值:"root" | |
数据库密码。 |
|
--storage-driver-secure | |
使用与数据库的安全连接。 |
|
--storage-driver-table string 默认值:"stats" | |
表名。 |
|
--storage-driver-user string 默认值:"root" | |
数据库用户名。 |
|
--tls-server-name string | |
服务器证书验证所用的服务器名称。如果未提供,则使用与服务器通信所用的主机名。 |
|
--token string | |
向 API 服务器进行身份验证的持有者令牌。 |
|
--user string | |
要使用的 kubeconfig 用户的名称。 |
|
--username string | |
对 API 服务器进行基本身份验证时所用的用户名。 |
|
--version version[=true] | |
--version, --version=raw 打印版本信息并退出;--version=vX.Y.Z... 设置报告的版本。 |
|
--kuberc string | |
用于偏好设置的 kuberc 文件的路径。可以通过导出 KUBECTL_KUBERC=false 特性门控或关闭 KUBERC=off 特性门控来禁用此功能。 |
|
--warnings-as-errors | |
将从服务器收到的警告视为错误,并以非零退出码退出。 |
另请参见
- kubectl - kubectl 控制 Kubernetes 集群管理器
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.