Azure Container Services中Docker容器收到未知本地IP连接是什么原因?
核心原因解释
端口疑问澄清
你日志中输出的client.Client.RemoteEndPoint是发起连接的客户端的IP和源端口,并非你服务端监听的端口。
TCP连接的四元组规则为「服务端IP + 服务端监听端口 + 客户端IP + 客户端源端口」:你服务端实际监听的是代码中NetworkInfo.TCP_PORT对应的端口,客户端发起连接时操作系统会自动分配1024~65535之间的随机高位端口作为源端口,53403就是这个随机生成的客户端源端口,属于TCP连接的正常逻辑,和你服务端监听的端口没有任何关联。
私有IP未知连接来源
该连接是Azure容器服务的默认平台操作,不属于Docker异常:
- Azure ACS集群默认部署在10段的私有VPC网络内,所有集群节点、集群管控组件的IP都属于这个私有网段
- 当你配置了容器端口暴露、或者配置了服务的存活/就绪探针(livenessProbe/readinessProbe)时,集群的kubelet组件或者负载均衡健康探针会定期向你的服务端口发起TCP握手探测,确认服务是否正常运行
- 你的代码逻辑是只要TCP握手完成就会打印连接日志,健康探测仅需要完成TCP握手就会判定服务存活,不需要后续业务层交互,完全符合你当前观察到的日志特征,服务启动后12秒出现日志也符合集群探针默认的首次探测时间间隔。
验证方法
- 查看ACS服务的部署配置,确认是否配置了TCP类型的存活/就绪探针
- 登录ACS集群的节点管理页面,核对10.92.0.24是否属于集群节点的内网IP
- 临时移除服务的端口暴露配置后重启容器,观察是否还会出现该连接日志,正常情况下移除端口暴露后探针不会继续探测,对应日志不会再生成
内容的提问来源于stack exchange,提问作者Mason Wheeler
相关产品推荐
相关产品推荐

