【发布时间】:2021-07-10 16:50:19
【问题描述】:
文档说,我对如何使用 Kubernetes 处理 TCP 探测有点困惑:
第三种活动探测使用 TCP 套接字。有了这个 配置,kubelet 将尝试打开一个套接字到您的 指定端口上的容器。如果它可以建立连接,则 容器被认为是健康的,如果它不能被认为是 失败。
但据我所知,套接字客户端在服务器对套接字执行accept 之前已连接。这个 TCP 握手是由操作系统管理的……那么 Kubernetes 是如何“知道”套接字的状态的呢?
为了提供一点上下文,我正在尝试在我的应用程序 (C++) 中编写一个单元测试,但我不知道 K8s 如何处理这个问题,但在 k8s 中它确实可以按预期工作(我的意思是,如果我不这样做接受连接,它将把我的容器声明为不活动)。
感谢您的时间和考虑!
编辑 1
抱歉@Steffen Ullrich,这需要我一些时间,但这里有一个代码示例:https://github.com/quentingodeau/k8s-probe
然后我得到的痕迹:
$ kubectl logs -f $(kubectl get pods | egrep -o 'sample-deployment-[^ ]*')
[2021-07-10 18:46:22.837] [info] Server acccept the client...
[2021-07-10 18:46:23.838] [info] Server acccept the client...
[2021-07-10 18:46:24.840] [info] Server acccept the client...
[2021-07-10 18:46:25.837] [info] Server acccept the client...
[2021-07-10 18:46:26.836] [info] Server acccept the client...
[2021-07-10 18:46:27.839] [info] Server acccept the client...
[2021-07-10 18:46:28.840] [info] Server acccept the client...
[2021-07-10 18:46:29.836] [info] Server acccept the client...
[2021-07-10 18:46:30.843] [info] Server acccept the client...
[2021-07-10 18:46:31.028] [info] Send SIGUSR1
[2021-07-10 18:46:31.836] [info] Server acccept the client...
[2021-07-10 18:46:31.836] [info] Start to not procssing incoming connection
[2021-07-10 18:46:35.855] [info] End of application (signal=15)
编辑 2
【问题讨论】:
标签: sockets kubernetes