在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何进行K8S中的runtime异常复盘

112次阅读
没有评论

共计 2060 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章给大家介绍如何进行 K8S 中的 runtime 异常复盘,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、概述

收到线上 k8s 的 events 报警:

看到这个报警,赶紧看下服务,发现服务目前正常,但有一个正发布的服务,销毁不了老的 pod,我怀疑 node 节点可能是不可用了。果不其然,在控制节点上查看 node 状态,为 not ready。

二、检查

报的内核报警,但是其实不应该导致 node 节点不可用,故赶紧深究一下,先将 node 节点打上污点,不可调度。

当集群节点进入 NotReady 状态的时候,我们需要做的第一件事情,肯定是检查运行在节点上的 kubelet 是否正常。在这个问题出现的时候,使用 systemctl 命令查看 kubelet 状态,发现它作为 systemd 管理的一个 daemon,是运行正常的。当我们用 journalctl 查看 kubelet 日志的时候,发现下边的错误。

 Dec 11 19:38:45 ali-worker-k8s-001 kubelet[20140]: E1211 19:38:45.239546 20140 kubelet.go:1551] error killing pod: failed to  KillPodSandbox  for  31321cfc
-1bbe-11ea-893e-00163e14447d  with KillPodSandboxError:  rpc error: code = DeadlineExceeded desc = context deadline exceeded

order-oms-64544b9c65-4lq5d_sec-mall 这个 pod 杀不掉,导致了 docker 死锁,所以判断是 containerd 的问题

问了下阿里的大佬

shim 其实扮演父进程,回收容器里进程的角色,跟 systemd 去回收系统进程一样。linux 上如果 systemd 卡主了,就会有一堆 defunct。shim 老版本的同步机制,就用了一个 32 大小的 channel,理论上超过 32 个进程一起退出,就会 overflow

于是我 exec 进入容器,果然发现进程很多,都是多于 32,于是选择升级 containerd 解决问题

具体操作步骤如下

1、下载 1.2.10 containerd
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm
2、停止 kubelet 进程
systemctl stop kubelet
3、停止 containerd
systemctl stop containerd
4、更新 rpm 版本
rpm -Uvh containerd.io-1.2.10-3.2.el7.x86_64.rpm
5、启动 containerd,检查版本
systemctl start containerd
ctr version
6、启动 docker,检查容器进程
systemctl start docker
docker ps
7、启动 kubelet
systemctl start kubelet
8、调度 pod 到该节点,验证是否正常 

三、网上看到的另一个 bug 是 systemd 的问题

1、什么是 PLEG

这个报错很清楚的告诉我们,容器 runtime 是不工作的,且 PLEG 是不健康的。这里容器 runtime 指的就是 docker daemon。Kubelet 通过直接操作 docker daemon 来控制容器的生命周期。而这里的 PLEG,指的是 pod lifecycle event generator。PLEG 是 kubelet 用来检查容器 runtime 的健康检查机制。这件事情本来可以由 kubelet 使用 polling 的方式来做。但是 polling 有其成本上的缺陷,所以 PLEG 应用而生。PLEG 尝试以一种“中断”的形式,来实现对容器 runtime 的健康检查,虽然实际上,它同时用了 polling 和”中断”两种机制。

基本上看到上边的报错,我们可以确认,容器 runtime 出了问题。在有问题的节点上,通过 docker 命令尝试运行新的容器,命令会没有响应。这说明上边的报错是准确的.

2、容器 runtime

容器 runtime 包括 docker daemon,containerd,containerd-shim 以及 runC。组件 containerd 负责集群节点上容器的生命周期管理,并向上为 docker daemon 提供 gRPC 接口。

故也升级了下 systemd。升级 systemd,直接 yum update systemd 就可以。

其中如果遇到容器起不来网络插件的情况,可以 ip link del dev cni0,会自动重启的。

关于如何进行 K8S 中的 runtime 异常复盘就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2060字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久亚洲精品成人777大小说 | 日本亚洲色大成网站www久久 | 无码国产精品一区二区免费式直播 | 国产成人va亚洲电影 | 午夜爽爽爽男女免费观看影院 | 欧美成人香蕉网在线观看 | 91精品啪在线观看国产色 | 国产xxxx99真实实拍 | 免费看一级黄色大片 | 亚洲欧洲日产国码天堂 | 日本一区二区三区四区无限 | 精品无码人妻被多人侵犯av | 99热精品成人免费观看 | 福利精品一区 | 品色堂免费论坛 | 国产亚洲欧美成人久久片 | 精品人妻大屁股白浆无码 | 欧美成人免费一区在线播放 | 在线第一福利视频观看 | 两个人看的www免费高清 | 国产一区二区精品久久91 | 亚洲精品国产精品乱码不卡 | 久久国产亚洲欧美日韩精品 | 亚洲av永久无码天堂网毛片 | 欧美综合自拍亚洲综合网 | 青青草原精品国产亚洲av | 亚洲天堂99 | 欧美三级午夜理伦三级小说 | 国产精品 人妖系列 | 天天狠狠色综合图片区 | 国产一线二线三线女 | 露脸真实国语乱在线观看 | 一级毛片一级黄片 | 亚洲精品无码日韩国产不卡av | 成在线人免费视频一区二区 | jizz亚洲| 久草在线精品 | 人人爽人人爽人人爽 | 亚洲视频色图 | 老司机在线ae85 | 秋霞理论一级在线观看手机版 |