Kubernetes中复用节点时Docker-in-Docker(DIND)连接不可用问题求助
Kubernetes中复用节点时Docker-in-Docker(DIND)连接不可用问题求助
大家好,最近我们在Jenkins流水线里用Docker-in-Docker(DIND)的时候碰到个挺棘手的问题,感觉问题根源不在Jenkins本身,而是Kubernetes容器的配置或者节点复用的环节出了状况,想请社区的朋友们帮忙分析分析。
我们的Pod配置是这样的:
apiVersion: v1 kind: Pod spec: nodeSelector: role: e2e_only tolerations: - effect: NoSchedule key: e2e_only operator: Equal value: "true" securityContext: runAsUser: 0 containers: - name: deploy-toolbox image: 999999.dkr.ecr.eu-west-1.amazonaws.com/deploy-toolbox:latest command: ['tail', '-f', '/dev/null'] imagePullPolicy: Always env: - name: DOCKER_HOST value: 'tcp://localhost:2375' resources: requests: memory: '100Mi' cpu: '100m' limits: memory: '2Gi' cpu: '2000m' - name: docker-daemon image: docker:27.2.2-dind imagePullPolicy: IfNotPresent
具体的问题是:第一次在某个Kubernetes节点上运行这个Pod时,deploy-toolbox容器能正常通过tcp://localhost:2375连接到同Pod内的docker-daemon,DIND功能完全正常。但当这个节点被复用,再次运行相同的Pod时,deploy-toolbox就没法连上docker-daemon了,各种Docker操作都失败。
我初步怀疑可能是以下几个方向,但还没找到确切原因:
- 节点上有没有残留的DIND相关端口占用或者进程?
- DIND容器的网络配置在节点复用的时候有没有什么变化?
- 是不是Pod的securityContext或者权限设置在节点复用场景下有冲突?
有没有朋友遇到过类似的情况?或者能给一些排查的思路和建议?感激不尽!
备注:内容来源于stack exchange,提问作者UP.
相关产品推荐
相关产品推荐

