从 dockershim 迁移遥测和安全代理

    为了让代理运行在 Kubernetes 集群中,我们有几种办法。 代理既可以直接在节点上运行,也可以作为守护进程运行。

    因为历史原因,Kubernetes 建立在 Docker 之上。 Kubernetes 管理网络和调度,Docker 则在具体的节点上定位并操作容器。 所以,你可以从 Kubernetes 取得调度相关的元数据,比如 Pod 名称;从 Docker 取得容器状态信息。 后来,人们开发了更多的运行时来管理容器。 同时一些项目和 Kubernetes 特性也不断涌现,支持跨多个运行时收集容器状态信息。

    如果某 Pod 想调用运行在节点上的 ,该 Pod 必须满足以下两个条件之一:

    • 直接以卷的形式挂载 Docker 守护进程特权套接字的特定路径。

    举例来说:在 COS 镜像中,Docker 通过 /var/run/docker.sock 开放其 Unix 域套接字。 这意味着 Pod 的规约中需要包含 卷以挂载 /var/run/docker.sock

    Note: 对于 Pod 来说,访问宿主机上的 Docker 还有其他方式。 例如,可以挂载 /var/run 的父目录而非其完整路径 (就像这个例子)。 上述脚本只检测最常见的使用方式。

    在你的集群节点被定制、且在各个节点上均安装了额外的安全和遥测代理的场景下, 一定要和代理的供应商确认:该代理是否依赖于 Docker。

    最后修改 February 07, 2021 at 11:30 AM PST: