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

具体版本如下:

bash 复制代码
[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镜像版本如下:

bash 复制代码
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} 强制删除命令可以成功删除。

进一步影响:

  1. 造成【K8S Pod持续Pending(Message: 0/5 nodes are available/Insufficient cpu)】问题。

  2. 造成kube-system命名空间下系统容器重启故障,包括:网络插件calico、数据库etcd、控制器管理器kube-controller-manager等

解决办法

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

更换的镜像底层Linux如下:

bash 复制代码
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系统容器重启。

相关截图


相关推荐
原来是猿5 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
Cat_Rocky6 小时前
k8s-持久化存储,粗浅学习
java·学习·kubernetes
AOwhisky6 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术
rabbit_pro7 小时前
Docker compose部署Ollama使用模型
linux·运维·docker
ILL11IIL8 小时前
k8s的pod管理及优化
云原生·容器·kubernetes
Irissgwe9 小时前
六、Ext系列文件系统(2.核心原理与应用)
linux·分区··inode·软硬连接·路径缓存·ext系列文件
tkevinjd10 小时前
wsl2安装
linux·wsl·虚拟机·wsl2
故事还在继续吗10 小时前
Linux 内核模块开发实战
linux·linux内核
南境十里·墨染春水10 小时前
linux学习进展 守护进程
linux·服务器·学习
REDcker11 小时前
Android HWASan 详解:硬件标记原理、Clang 启用与排障实践
android·linux·debug·编译·clang·asan·hwasan