读懂这一篇,集群节点不下线( 九 )
在这次请求的客户端调用栈上 , 可以看到这次调用的核心函数是 Start 一个进程 。 我们在 containerd 的调用栈里搜索 Start , Process 以及 process.go 等字段 , 很容易发现下边这个线程 。
这个线程的核心任务 , 就是依靠 runC 去创建容器进程 。 而在容器启动之后 , runC 进程会退出 。 所以下一步 , 我们自然而然会想到 , runC 是不是有顺利完成自己的任务 。
查看进程列表 , 我们会发现 , 系统中有个别 runC 进程 , 还在执行 , 这不是预期内的行为 。 容器的启动跟进程的启动 , 耗时应该是差不对的 , 系统里有正在运行的 runC 进程 , 则说明 runC 不能正常启动容器 。
什么是 Dbus
1. RunC 请求 Dbus
容器 runtime 的 runC 命令 , 是 libcontainer 的一个简单的封装 。 这个工具可以用来管理单个容器 , 比如容器创建 , 或者容器删除 。 在上节的最后 , 我们发现 runC 不能完成创建容器的任务 。
我们可以把对应的进程杀掉 , 然后在命令行用同样的命令尝试启动容器 , 同时用 strace 追踪整个过程 。
推荐阅读
- 地下城堡|《代号:破晓》官网“暗藏”剧情,你都读懂了吗?
- |开始·这是一个开始?开始
- 北凉悍刀行|这是一篇超详细的《北凉悍刀行》手游攻略
- 打野|王者荣耀:S25赛季打野需要注意什么?读懂这篇攻略,轻松上分
- 小智|《宝可梦》与火系御三家的对战,小智靠逆属性赢得对战胜利?
- 剑网3|剑三史上开车最离奇的外观,只因一篇818,便让黄牛高价囤货
- 地下城与勇士|DNF:零氪与充钱的差距到底有多大?这一篇文章将颠覆你的认知!
- 我的世界|我的世界:没有女朋友?那还不看过来,一篇文章教你找老婆
- 地下城与勇士|书荒是不可能的,这辈子都不可能书荒(DNF一篇)
- s5|一篇文章彻底玩懂云顶之弈S5赛季!轻松玩会所有阵容!