更新时间:2024-10-14 GMT+08:00

节点sock文件挂载检查异常处理

检查项内容

检查节点上的Pod是否直接挂载docker/containerd.sock文件。升级过程中Docker/Containerd将会重启,宿主机sock文件发生变化,但是容器内的sock文件不会随之变化,二者不匹配,导致您的业务无法访问Docker/Containerd。Pod重建后sock文件重新挂载,可恢复正常。

通常K8S集群用户基于如下场景在容器中使用上述sock文件:

  1. 监控类应用,以DaemonSet形式部署,通过sock文件连接Docker/Containerd,获取节点容器状态信息。
  2. 编译平台类应用,通过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短暂不可访问风险,继续升级。

    请选择跳过该检查项异常后重新检查,在集群升级完成后删除存量Pod,触发Pod重建,访问将恢复。

  • 问题场景三:部分老版本的CCE插件存在该异常

    请将老版本的CCE插件升级至最新版本。

  • 问题场景四:日志分析里面出现“failed to execute docker ps -aq”错误。

    该报错出现一般是因为容器引擎功能异常导致,请您提工单联系运维人员处理。