kubectl delete 是什么
kubectl delete 删除集群资源,支持按文件、按名称、按标签三种方式。默认开启级联删除:删 Deployment 会连带删掉它管理的 ReplicaSet 与 Pod。按标签删除最方便也最危险——选择器写得宽一点就可能波及不该动的实例。删除前先执行一次同条件的 get,是最省事的自保习惯。
基本信息
| 按文件 | kubectl delete -f deploy.yaml,删除文件中定义的资源 |
|---|---|
| 按名称 | kubectl delete pod web-1 或 kubectl delete deploy web |
| 按标签 | kubectl delete pods -l app=web,选择器决定影响范围 |
| 级联策略 | 默认后台级联;--cascade=orphan 保留下属资源 |
| 强制删除 | --grace-period=0 --force 仅用于卡在 Terminating 的场景 |
典型使用场景
- 重新调度:删掉异常 Pod 让控制器重建一个新实例
- 下线服务:按文件删除整套 Deployment 与配套 Service
- 批量清理:按标签一次性删除某个环境的临时任务 Pod
- 环境回收:删除整个命名空间回收其中的全部资源
- 解卡死资源:对象卡在 Terminating 状态时用强制删除解除
使用示例
使用示例
kubectl get pods -l app=web # 删除前先看清清单,确认范围
kubectl delete pods -l app=web # 按标签删除
kubectl delete -f deploy-web.yaml # 按文件删除,与文件严格对应
kubectl delete deploy web --cascade=orphan # 保留下属 Pod 不级联删除
kubectl delete pod stuck-pod --grace-period=0 --force # 应急解卡死删除方式对照
| 方式 | 影响范围 | 风险点 |
|---|---|---|
| 按文件 | 严格对应文件内容 | 文件与实际集群状态可能已不一致 |
| 按名称 | 单个资源 | 名字写错可能命中同类资源 |
| 按标签 | 符合选择器的全部资源 | 选择器过宽导致误删 |
| 删命名空间 | 其中所有资源 | 不可恢复,数据取决于卷回收策略 |
| 强制删除 | 单个卡死资源 | 对象被摘除但容器可能仍在运行 |
删除命名空间会删除其中的所有资源且不可恢复。执行前确认命名空间内没有独有数据,并检查持久卷声明的回收策略是保留还是删除。
删除 Pod 与删除 Deployment 的结果完全不同:Pod 被删后控制器会立刻重建一个新实例,而删除 Deployment 才会真正下线服务。想重启服务不要直接删 Pod。