k8s delete namespace Terminating

news2024/9/28 11:17:45

版本情况

kubenetes版本: v1.19.10
docker版本: v20.10.6

一、问题经过

早上发现 kubectl delete ns时, 删除namespace一直处于Terminating状态
尝试加上--force参数,执行kubectl delete ns --force,也是一样Terminating

当时Terminating截图

1、猜测原因:master节点资源不足

前段时间pod的数量增加,怀疑是master节点机器资源不足导致处理效率问题

目前运行的pod数量

查看Prometheus监控,可以看到master节点的使用率都很低,排除资源不足问题

2、猜测原因:有依赖资源没有释放,如pvc、pod等 

执行查看资源情况, 没有发现依赖资源未释放情况,排查依赖资源没有释放问题

kubectl get all -n test

3、猜测原因:k8s本身存在bug,查验源码和官方issue,分析delete namespace过程

查看ns状态,也没有异常情况

kubectl describe ns test

使用json查看ns详情

kubectl get ns test -o json
{
"lastTransitionTime": "2023-06-20T06:19:29Z",
"message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request",
"reason": "DiscoveryFailed",
"status": "True",
"type": "NamespaceDeletionDiscoveryFailure"
},

参考:kubernetes -- 删除namespace的过程以及遇到的bug解决_LanVv的博客-CSDN博客

二、治标不治本删除方法

了解完源码,还是没得到彻底解决方法

网上很多介绍使用api去解决 使用/api/v1/namespaces/${ns}/finalize 去删除namespace, 只能治标不治本,顺便贴上curl的解决方法

# 注意修改ip地址和生成k8s证书
for ns in `kubectl get ns  | grep Terminating | awk '{print $1}'`
do
    # 获取ns的json
    kubectl get namespace ${ns} -o json > /tmp/${ns}.json
    # 将spec内容清空, 剔除finalizers
    cat ${ns}.json | jq 'del(.spec.finalizers)' > /tmp/del_${ns}.json
    # 用api去删除ns
    curl --cert /tmp/client.pem --key /tmp/client-key.pem --cacert /tmp/ca.pem -H "Content-Type: application/json" -X PUT --data-binary @/tmp/del_${ns}.json https://master_IP:6443/api/v1/namespaces/${ns}/finalize
    # 删除残留文件
    rm -f /tmp/del_${ns}.json /tmp/${ns}.json
done

参考:k8s删除Terminating状态的命名空间_LanVv的博客-CSDN博客

三、kubeernetes组件日志分析

查看kube-apiserver 503

controller.go:116] loading OpenAPI spec for "v1beta1.metrics.k8s.io" failed with: failed to retrieve openAPI spec, http error: ResponseCode: 503, Body: service unavailable
v1beta1.metrics.k8s.io
http error: ResponseCode: 503, Body: service unavailable 简单明了

查看kube-controller-manager

namespace_controller.go:162] deletion of namespace test failed: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request
也是metrics.k8s.io/v1beta1

四、问题解决 

具体根因,kube-prometheus项目 的prometheus-adapter服务未Running

kube-prometheus项目地址

https://github.com/prometheus-operator/kube-prometheus

根据kube-apiserver和kube-controller-manager的错误日志定位,metrics.k8s.io/v1beta1这个apiservice有问题

kubectl get apiserver | grep False

metrics.k8s.io/v1beta1是monitoring/prometheus-adapter生成出来的

kubectl -n monitoring get pods | grep prometheus-adapter

查看服务发现,该pod异常了

Back-off pulling image "directxman12/k8s-prometheus-adapter:v0.8.4"

因node not ready 将pod驱逐了,而公司内网在做防火墙升级,禁止了一部分网络,导致pull失败

问题解决,解决问题的方式很简单,但可收获了一些排查思路

把服务拉起即可,尽量使用国内镜像仓库/公司级镜像仓库,使用dockerhub,可能发生网络问题

服务起来后

已经变成True状态

再次删除namespace,成功

其他参考:unable to retrieve the complete list of server APIs

  1. 【k8s错误处理】——unable to retrieve the complete list of server APIs_unable to retrieve connectors_Teingi的博客-CSDN博客
  2. https://github.com/prometheus-operator/kube-prometheus/issues/275

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《网络安全0-100》低层协议安全性

低层协议安全性 IP协议 对于网络层,IP协议是其中一个非常重要的协议。网络层的IP地址相当于数据链路层的Mac地址。协议字段如下,每行4字节,总共4*520字节。 IP协议安全性:IP协议不能保证数据就是从数据包中给定的源地址发出的&am…

高速 AD/DA 实验

目录 高速 AD/DA 实验 1、简介 1.1、AD9708 芯片 1.2、AD9280 芯片 2、实验任务 3、硬件设计 4、程序设计 4.1、AD/DA 顶层模块代码 4.2、创建一个 ​​​​​​​ILA IP 核 4.3、创建一个ROM IP核,将 .coe 文件保存到生成的 Rom IP 核中 4.4、DA 数据发…

人工智能基础实验报告

蒙特卡洛算法 目 录 蒙特卡洛算法 1 概述: 1 思考步骤: 1 应用: 1 特点: 2 参 考 资 料 3 概述: 蒙特卡罗法(Monte Carlo method)也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调…

【操作系统】CPU调度

目录 1.什么叫调度 2.调度的目标 3.进程调度方式 4.闲逛进程 5.典型的调度算法 5.1先来先服务(FCFS)调度算法 5.2短作业优先(SJF) 调度算法 5.3优先级调度算法 5.4高响应比优先调度算法 5.5时间片轮转调度算法 5.6多级队列调度算法 5.7多级反馈队列调度算法(融合了前…

Qgis基本操作之图层符号化和标注实战

目录 前言 一、基础数据 1、公共预算收入数据简介 2、省份数据简介 二、地图标注 1、百强县公共预算收入地图标注 2、省信息标注 三、地图符号化 1、百强县公共预算收入符号化 2、省数据符号化 总结 前言 在之前的Qgis中进行Shp和Excel属性连接实现百强县公共预算空间分…

MATLAB 之 图形对象及其句柄和图形窗口与坐标轴

这里写目录标题 一、图形对象及其句柄1. 图形对象2. 图形对象句柄的使用3. 图形对象属性3.1 属性名与属性值3.2 属性的操作3.3 图形对象的公共属性 二、图形窗口与坐标轴1. 图形窗口对象2. 坐标轴对象 一、图形对象及其句柄 MATLAB 的图形系统是面向图形对象的。图形对象是 MA…

Redis新功能

Redis 新功能 ACL 参考官网:https://redis.io/topics/acl 基本介绍 1、Redis ACL 是Access Control List(访问控制列表)的缩写,该功能根据可以执行的命令和可以访问的键来限制某些连接 2、在Redis 5 版本之前,Red…

使用python做一个批量重命名文件的小工具

🛴 放松 端午放假前的下午🙄 没事儿可做,一个准备开始弄的项目里面有大量的图片,但是名字都乱七八糟的,作为一个稍微带点强迫症的人看不下去。 既然如此,想直接重命名,可是Windows的重命名效果…

《XrayGLM:基于VisualGLM-6B微调训练对X光胸片进行医学诊断》学习分享与本地项目微调部署实践

XrayGLM据说是首个会看胸部X光片的中文多模态医学大模型,我最近也是因为关注这个所以就找时间学习了一下,顺便把学习资料对应记录分享一下。 官方提供了开源的项目,地址在这里,如下所示: 最近,通用领域的大…

MySQL - 第6节 - MySQL表的增删查改

1.MySQL表的增删查改概述 • 表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。 • CRUD的操作对象是对…

抖音小店有哪些常见扣分原因?如何避免在抖音小店中被扣分?

抖音小店现在已经成为了很多商家的首选电商平台,但是在使用抖音小店的过程中,也会出现一些扣分的情况。接下来,四川不若与众将为大家介绍抖音小店扣分的原因和避免办法。 一、抖音小店扣分原因 1. 服务不到位:商家没有及时回复用户…

2023-01-06 VMWare桥接网络配置.md

VMWare16 桥接网络配置 一 环境清单 VMWare 16虚拟机:Centos7宿主机:Windows 10 二 配置过程 查看宿主机的IP相关信息 ipconfig -all 配置虚拟网络编辑器 2.1 打开VMware Workstation Pro,点击左上角编辑-->虚拟网络编辑器 2.2 点击更改配…

CRM商机管理:提升客户体验和销售效率

如何利用CRM系统提升商机管理? 花点时间思考一下你的企业管理商机的方法,是否有以下情况: ● 不知道渠道中的商机是否可行。 ● 不知道应该关注哪些商机。 ● 花了几个小时或几天的时间来跟进商机。 ● 不知道赢得商机与失去商机的比例。 如…

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决

【Kafka】Suppressed: java.nio.file.AccessDeniedException问题的解决 目录 前言 一、错误发生的原因 二、问题如何解决 前言 今天在运行kafka时,出现了如下图的报错Suppressed: java.nio.file.AccessDeniedException,怎么启动也启动不起来。那此问…

C/C++的命令执行分析

背景 最近发现一个命令执行风险; 一开始提供修复建议,是对特殊字符进行过滤,但是业务侧没有办法过滤,因为输入点是没有办法限制的,然后提供另一个方案是将用户的输入写到配置文件中,然后再进行操作&#x…

LeetCode24. 两两交换链表中的节点+19. 删除链表的倒数第 N 个结点

24. 两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1…

蓝牙 - 抓包工具BPA600介绍

BPA 600开箱后,先把天线(antenna)装在后面的SMA接口上。 SMA connectors: SMA(SubMiniature version A)连接器是在20世纪60年代开发的半精密同轴射频连接器,是一种用于同轴电缆的最小连接器接口,具有螺旋式耦合机制。…

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

近日,复旦大学高校专区在飞桨人工智能学习与实训社区AI Studio上线,双方将携手搭建人工智能教学实训平台专区,汇集优质教学实训资源,校企共同培育复合型 AI 人才,为国家输送高质量人才,促进国家智能化进程。…

【机器学习】Kullback-Leibler散度实现数据监控

https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence 一、说明 本篇叙述了KL 散度的数学、直觉和如何实际使用;以及它如何最好地用于过程监测。Kullback-Leibler 散度度量(相对熵)是信息论中的一种统计测量方法,通…

深入理解Dockerfile

一、是什么 Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。把镜像比喻成一个软件那么DockerFile就相当于是软件的配置文件。具体的内容可参考[官方网站](Dockerfile reference | Docker Documentation。 二、能做什么 通…