本文主要是介绍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上更新版本、自动删除、手动删除时,
- 新创建的容器成功进入
running
状态,但上一版本的容器持续terminating
。 - 手动删除
terminating
状态的容器,无法成功。 terminating
状态的容器仍然正常运行,正常消耗资源,可正常登录其shell
。- 通过
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系统容器重启。
相关截图
这篇关于Ubuntu镜像与K8S冲突,容器持续Terminating的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!