Ubuntu镜像与K8S冲突,容器持续Terminating

问题

  • 记录一次软件冲突BUG: eclipse-temurin:11-jdk(底层Ubuntu 20.04.3 LTS)镜像创建的容器在K8S-1.25.5上无法正常terminating,造成资源浪费,甚至引发K8S资源CPU insufficient报错。
  • 具体表现 某些容器镜像在K8S上无法正常被kill掉。
    在这里插入图片描述

环境信息

  • 操作系统:Kylin Linux Advanced Server V10 (Sword)
  • Docker:Docker version 20.10.21, build baeda1f
  • Kubelet:Kubernetes v1.25.5
  • Kubeadm:v1.25.5
  • 造成故障的基础镜像:eclipse-temurin:11-jdk

具体版本如下:

[sysma@k8s-0001 ~]$ cat /etc/os-release 
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"

[sysma@k8s-0001 ~]$ kubelet --version
Kubernetes v1.25.5
[sysma@k8s-0001 ~]$ kubeadm version
kubeadm version: &version.Info{
   Major:"1", Minor:"25", GitVersion:"v1.25.5", GitCommit:"804d6167111f6858541cef440ccc53887fbbc96a", GitTreeState:"clean", BuildDate:"2022-12-08T10:13:29Z", GoVersion:"go1.19.4", Compiler:"gc", Platform:"linux/amd64"}
[sysma@k8s-0001 ~]$ 
[sysma@k8s-0001 ~]$ docker --version
Docker version 20.10.21, build baeda1f
[sysma@k8s-0001 ~]$ 

eclipse-temurin:11-jdk基础镜像的底层Linux镜像版本如下:

root@contribution-c59ff89fc-vp5p9:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

问题描述

使用该基础镜像运行java程序的微服务容器在K8S上更新版本、自动删除、手动删除时,

  1. 新创建的容器成功进入running 状态,但上一版本的容器持续terminating
  2. 手动删除terminating状态的容器,无法成功。
  3. terminating状态的容器仍然正常运行,正常消耗资源,可正常登录其shell
  4. 通过kubectl delete pods ${POD} --grace-period=0 --force -n ${NAMESPACE} 强制删除命令可以成功删除。

进一步影响:
5. 造成【K8S Pod持续Pending(Message: 0/5 nodes are available/Insufficient cpu)】问题。
6. 造成kube-system命名空间下系统容器重启故障,包括:网络插件calico、数据库etcd、控制器管理器kube-controller-manager等

解决办法

更换底层镜像,再次换成alpine-Linux镜像,测试多次更新、发布。此时不会出现terminating的容器。
更换的镜像底层Linux如下:

bash-4.4# cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.8.2
PRETTY_NAME="Alpine Linux v3.8"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"
bash-4.4# 

注意

软件冲突导致kube-system容器故障的关联性只是推测。目前该问题没有复现,也可能是业务压力或底层资源异常造成了K8S系统容器重启。

相关截图

在这里插入图片描述
在这里插入图片描述

相关推荐

  1. K8S Pod Terminating/Unknown故障排查

    2023-12-05 22:30:04       28 阅读
  2. k8s删除namespace失败一直处于Terminating状态

    2023-12-05 22:30:04       19 阅读
  3. K8S中删除Terminating状态的命名空间

    2023-12-05 22:30:04       11 阅读
  4. ubuntu安装k8s

    2023-12-05 22:30:04       20 阅读

最近更新

  1. Vue3框架搭建3:配置说明-prettier配置

    2023-12-05 22:30:04       0 阅读
  2. Python基础练习•二

    2023-12-05 22:30:04       0 阅读
  3. 【Unity】ScreenToWorldPoint转换三维空间MousePosition

    2023-12-05 22:30:04       0 阅读
  4. AD确定板子形状

    2023-12-05 22:30:04       1 阅读
  5. ELK优化之Elasticsearch

    2023-12-05 22:30:04       1 阅读
  6. QianfanLLMEndpoint和QianfanChatEndpoint的区别

    2023-12-05 22:30:04       1 阅读

热门阅读

  1. k8s(一):基本概念

    2023-12-05 22:30:04       38 阅读
  2. Source Code Management--(SCM in gitlab)

    2023-12-05 22:30:04       30 阅读
  3. 开源与闭源:技术创新的两难选择

    2023-12-05 22:30:04       38 阅读
  4. 如何写一个吸引人的标题?

    2023-12-05 22:30:04       42 阅读