K8s 删除命名空间 namespace ,命令空间会一直 terminating

本文介绍了解决Kubernetes命名空间删除难题的两种方法。第一种是通过使用kubectl proxy结合curl命令来修改命名空间的finalizers,从而绕过常规删除流程。第二种方法涉及导出命名空间的JSON配置,手动编辑并清除spec部分的内容,再通过curl命令提交更改,最终实现命名空间的顺利删除。

第一种方式:

kubectl proxy

kubectl get namespace istio-system -o json | jq 'del(.spec.finalizers[] | select("kubernetes"))' | curl -s -k -H "Content-Type: application/json" -X PUT -o /dev/null --data-binary @- http://localhost:8001/api/v1/namespaces/istio-system/finalize
 

第二种方式:

比如说 kubectl  delete istio-operator 命名空间后,一直处于 terminating 。。。

kubectl get ns istio-operator -o json > delete-ns.json

{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"labels\":{\"install.operator.istio.io/owning-resource\":\"\",\"istio-injection\":\"disabled\",\"istio-operator-managed\":\"Reconcile\",\"operator.istio.io/component\":\"IstioOperator\",\"operator.istio.io/managed\":\"Reconcile\",\"operator.istio.io/version\":\"1.6.0\"},\"name\":\"istio-operator\"}}\n"
        },
        "creationTimestamp": "2020-07-22T07:40:17Z",
        "labels": {
            "install.operator.istio.io/owning-resource": "",
            "istio-injection": "disabled",
            "istio-operator-managed": "Reconcile",
            "operator.istio.io/component": "IstioOperator",
            "operator.istio.io/managed": "Reconcile",
            "operator.istio.io/version": "1.6.0"
        },
        "name": "istio-operator",
        "resourceVersion": "176004",
        "selfLink": "/api/v1/namespaces/istio-operator",
        "uid": "0d14ab93-14b1-4aa8-98a5-450bb5b84ae1"
    },
    "spec": {
        "finalizers": [
            "kubernetes"
        ]
    },
    "status": {
        "phase": "Active"
    }
}
 

将 spec 中的内容清空

在一个终端 kubectl proxy 开启代理 

curl -k -H "Content-Type: application/json" -X PUT --data-binary @delete-ns.json http://127.0.0.1:8081/api/v1/namespaces/istio-operator/finalize

然后命令空间就会被删除啦

<think> 我们参考了上述引用内容,特别是引用[1]、[3]和[5]中提到了查看命名空间的方法。 根据引用[1]和[3]:Kubernetes中查看命名空间的常用命令是`kubectl get namespaces`(或其简写形式`kubectl get ns`)。 引用[5]则提供了查看某个命名空间下所有资源的方法,但用户的问题只是查看命名空间本身。 因此,我们可以直接告诉用户使用`kubectl get namespaces`或`kubectl get ns`命令来查看集群中所有的命名空间。 另外,如果需要查看某个命名空间的详细信息,可以使用`kubectl describe namespace <namespace_name>`。 注意:用户可能还想知道如何查看特定命名空间下的资源,但问题只要求查看命名空间,所以先回答基本方法。 但是,根据引用[3]中的内容,我们还可以展示命名空间的标签,使用`kubectl get ns --show-labels`。 因此,回答应包括: 1. 查看所有命名空间的基本命令。 2. 查看命名空间详细信息(包括标签等)的命令。 同时,我们也可以生成相关问题,以帮助用户深入理解。 注意:用户问题中没有指定要查看的是哪个命名空间,所以回答的是查看所有命名空间。 根据引用[1],默认情况下会创建几个命名空间(default, kube-system, kube-public),用户执行命令后应该能看到这些。 回答结构: 1. 直接给出查看命令。 2. 给出示例输出(模拟)。 3. 扩展其他相关查看方式(如查看标签、描述命名空间)。 4. 生成相关问题。 注意:我们不需要执行真正的命令,所以示例输出可以模拟常见的默认命名空间。 示例输出: ``` NAME STATUS AGE default Active 10d kube-system Active 10d kube-public Active 10d ``` 另外,根据引用[2]和[5]可以知道如何查看命名空间下的资源,但这不是用户当前的问题,我们可以放在相关问题中。 </think>在 Kubernetes (k8s) 中查看命名空间Namespace)的方法如下: ### 1. 查看所有命名空间 **核心命令**: ```bash kubectl get namespaces # 完整命令 kubectl get ns # 简写形式 ``` **输出示例**: ``` NAME STATUS AGE default Active 15d kube-system Active 15d kube-public Active 15d uat Active 7d ``` - 默认会显示系统创建的命名空间(如 `default`、`kube-system`、`kube-public`)和用户自定义的命名空间[^1][^3] - `STATUS` 列显示命名空间状态(如 `Active` 或 `Terminating`) --- ### 2. 查看命名空间详情 ```bash kubectl describe namespace <命名空间名称> # 例如 kubectl describe ns kube-system ``` **输出内容**: - 命名空间的标签(Labels) - 资源配额(ResourceQuota) - 资源限制范围(LimitRange) - 当前状态和事件日志[^3] --- ### 3. 查看命名空间标签 ```bash kubectl get ns --show-labels # 显示所有命名空间的标签 ``` **输出示例**: ``` NAME STATUS AGE LABELS kube-system Active 15d kubernetes.io/metadata.name=kube-system default Active 15d kubernetes.io/metadata.name=default ``` --- ### 4. 查看特定命名空间下的资源 ```bash kubectl get all -n <命名空间名称> # 查看该命名空间所有资源 kubectl get pods -n uat # 查看 uat 命名空间的 Pod(示例)[^2] ``` **高级查询**(按需显示资源规格): ```bash kubectl get pods -n uat -o custom-columns=\ "NAME:.metadata.name,\ NAMESPACE:.metadata.namespace,\ CPU_REQUEST:.spec.containers[*].resources.requests.cpu" [^2] ``` --- ### 注意事项 1. 未指定 `-n` 参数时,默认查询 `default` 命名空间[^1] 2. 卡在 `Terminating` 状态的命名空间需强制删除[^4]: ```bash # 步骤详见引用[4] kubectl proxy & kubectl get ns <命名空间> -o json > temp.json # 编辑 temp.json 删除 "finalizers" 字段 curl -X PUT http://localhost:8001/api/v1/namespaces/<命名空间>/finalize -H "Content-Type: application/json" --data-binary @temp.json ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方的飞猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值