问题描述
12月2日早晨9点多,群里反映排课服务异常,首先查询服务在k8s集群中的状态,发现正常,第二步,测试域名返回也正常,第三步,发现nacos注册中心中服务不存在了,第四步偶然发现服务所在的node节点服务器出现了异常标记。
处理方案
紧急处理方案是,标记异常节点为不可调度,防止其他使用nacos的服务注册到异常节点上,删除在异常节点上的pod服务,k8s会在其他节点重新调度pod服务。
后续方案:升级systemd程序
请通过快照等方式备份您的数据,然后在Kubernetes集群的各节点上执行以下命令,更新systemd程序包至最新版本并重新运行systemd程序。
1、升级低于systemd-219-67版本的systemd if [[
rpm -qa systemd
< “systemd-219-67” ]]; then yum update -y systemd && systemctl daemon-reexec && (killall runc || killall docker-runc ); fi;2、升级完查看runc或者docker-runc是否杀死 ps -ef|grep docker-runc ps -ef|grep runc
问题原因
CentOS 7.6系统使用的systemd-219-62.el7_6.6.x86_64软件包存在缺陷,引发异常错误
扩展1
systemd是什么
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。 Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
具体可参考文档
1、http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
扩展2
runtime-runc是什么
容器运行时,传统意义上来说就是代表容器从拉取镜像到启动运行再到中止的整个生命周期
docker和runC的关系
runC是一个根据OCI标准创建并运行容器的命令行工具(CLI tool)。
Docker就是基于runC创建的,简单地说,runC就是docker中最为核心的部分,容器的创建,运行,销毁等等操作最终都将通过调用runc完成。而runC也有自己的客户端,后来被提取出来作为一个单独的工具和库。其实现了 OCI 规范,包含config.json文件和容器的根文件系统。