更新时间:2024-01-26 GMT+08:00
节点sock文件挂载检查
检查项内容
检查节点上的Pod是否直接挂载docker/containerd.sock文件。升级过程中Docker/Containerd将会重启,宿主机sock文件发生变化,但是容器内的sock文件不会随之变化,二者不匹配,导致您的业务无法访问Docker/Containerd。Pod重建后sock文件重新挂载,可恢复正常。
通常K8S集群用户基于如下场景在容器中使用上述sock文件:
- 监控类应用,以DaemonSet形式部署,通过sock文件连接Docker/Containerd,获取节点容器状态信息。
- 编译平台类应用,通过sock文件连接Docker/Containerd,创建程序编译用容器。
解决方案
- 问题场景一:检查到应用存在该异常,进行整改。
推荐您使用挂载目录的方式挂载sock文件。例如,若宿主机sock文件路径为/var/run/docker.sock,您可参考下述配置进行整改。注意,该整改生效时会触发Pod重建。
kind: Deployment apiVersion: apps/v1 metadata: name: test spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: app: nginx spec: containers: - name: container-1 image: 'nginx' imagePullPolicy: IfNotPresent volumeMounts: - name: sock-dir mountPath: /var/run imagePullSecrets: - name: default-secret volumes: - name: sock-dir hostPath: path: /var/run
- 问题场景二:检查到应用存在该异常,明确应用使用场景后,接受sock短暂不可访问风险,继续升级。
父主题: 升级前检查异常问题排查