读懂这一篇,集群节点不下线( 八 )
同时 , 我们可以看到下边这个线程 。
这个线程上 , 函数 ContainerExecStart 也是在处理具体请求的时候 , 收到了 mutex 这个参数 。 但不同的是 , ContainerExecStart 并没有在等待 mutex , 而是已经拿到了 mutex 的所有权 , 并把执行逻辑转向了 containerd 调用 。 关于这一点 , 我们可以使用代码来验证 。
前边我们提到过 , containerd 向上通过 gRPC 对 docker daemon 提供接口 。 此调用栈上半部分内容 , 正是 docker daemon 在通过 gRPC 请求来呼叫 containerd 。
2. Containerd 调用栈分析
与输出 docker daemon 的调用栈类似 , 我们可以通过 kill -SIGUSR1 命令来输出 containerd 的调用栈 。 不同的是 , 这次调用栈会直接输出到 messages 日志 。
Containerd 作为一个 gRPC 的服务器 , 它会在接到 docker daemon 的远程请求之后 , 新建一个线程去处理这次请求 。 关于 gRPC 的细节 , 我们这里其实不用关注太多 。
推荐阅读
- 地下城堡|《代号:破晓》官网“暗藏”剧情,你都读懂了吗?
- |开始·这是一个开始?开始
- 北凉悍刀行|这是一篇超详细的《北凉悍刀行》手游攻略
- 打野|王者荣耀:S25赛季打野需要注意什么?读懂这篇攻略,轻松上分
- 小智|《宝可梦》与火系御三家的对战,小智靠逆属性赢得对战胜利?
- 剑网3|剑三史上开车最离奇的外观,只因一篇818,便让黄牛高价囤货
- 地下城与勇士|DNF:零氪与充钱的差距到底有多大?这一篇文章将颠覆你的认知!
- 我的世界|我的世界:没有女朋友?那还不看过来,一篇文章教你找老婆
- 地下城与勇士|书荒是不可能的,这辈子都不可能书荒(DNF一篇)
- s5|一篇文章彻底玩懂云顶之弈S5赛季!轻松玩会所有阵容!