1. 删除异常pod
| kubectl delete pod xxxx --force --grace-period=0 |
2. 删除异常namespace
说明:删除Terminatin状态的namespace
- 现象
- 如下,iot-01 和iot-02两个namespace删除后,一直处于Terminating状态
| [root@devops-master ~]# kubectl get namespaces |
| NAME STATUS AGE |
| cattle-prometheus-p-5pn7p Active 97m |
| cattle-system Active 252d |
| default Active 252d |
| iot-01 Terminating 249d |
| iot-02 Terminating 228d |
| iot-test-01 Active 6d19h |
| iot-test-03 Active 20h |
| [root@devops-master ~]# kubectl get all -n iot-01 |
| No resources found. |
- 解决方法一(edit对象)
| [root@devops-master ~]# kubectl edit namespaces iot-01 |
| creationTimestamp: "2019-08-15T05:38:52Z" |
| deletionGracePeriodSeconds: 0 |
| deletionTimestamp: "2020-04-20T05:52:38Z" |
| |
| |
| labels: |
| cattle.io/creator: norman |
| field.cattle.io/projectId: p-cmbs8 |
| name: iot-01 |
| resourceVersion: "53801851" |
| selfLink: /api/v1/namespaces/iot-01 |
| uid: 3061673c-dcd9-4442-80ae-0cd438d7df86 |
| spec: {} |
| status: |
| phase: Terminating |
| [root@devops-master ~]# kubectl get namespaces |
| NAME STATUS AGE |
| cattle-prometheus-p-5pn7p Active 97m |
| cattle-system Active 252d |
| default Active 252d |
| iot-02 Terminating 228d |
| iot-test-01 Active 6d19h |
| iot-test-03 Active 20h |
- 解决方法二 (通过API接口)
如果在方法一中,我们没有找到 finalizers:
这两行,我们使用一下方法解决:
本示例,我要删除的是park-stores
这个namespace,但是状态一直是Terminating
,切用方法一没有 finalizers:
这两行
| kubectl get namespace park-stores -o json > park-stores.json |
| { |
| "apiVersion": "v1", |
| "kind": "Namespace", |
| "metadata": { |
| "annotations": { |
| "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2021-04-14T09:49:08Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2021-04-14T09:49:08Z\"}]}", |
| "field.cattle.io/projectId": "c-mx7mw:p-bgsbc", |
| "lifecycle.cattle.io/create.namespace-auth": "true" |
| }, |
| "creationTimestamp": "2021-04-14T09:49:28Z", |
| "deletionTimestamp": "2022-11-14T07:13:27Z", |
| "labels": { |
| "field.cattle.io/projectId": "p-bgsbc" |
| }, |
| "name": "park-stores", |
| "resourceVersion": "330626203", |
| "selfLink": "/api/v1/namespaces/park-stores", |
| "uid": "deeba1a0-772f-4aee-a793-bcd1b00610fa" |
| }, |
| "spec": { |
| "finalizers": [ |
| "kubernetes" |
| ] |
| }, |
| "status": { |
| "phase": "Terminating" |
| } |
| } |
| |
删掉以下一段
| "spec": { |
| "finalizers": [ |
| "kubernetes" |
| ] |
| }, |
我们新打开一个终端,输入如下命令:
| [root@DoM01 ~]# kubectl proxy |
| Starting to serve on 127.0.0.1:8001 |
这个接口只允许本地访问,但好处是不用认证。因为这是前台执行的程序,一会儿删除之后Ctrl +c 结束即可。
| curl -k -H "Content-Type: application/json" -X PUT --data-binary @park-stores.json http: |
3. 删除异常PV PVC
- 删除异常 pv
| kubectl patch pv PV_NAME -p '{"metadata":{"finalizers":null}}' |
- 删除pvc
| kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers":null}}' |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?