繁体   English   中英

如何从运行在同一 Kube.netes 集群中的容器连接到 Docker,它在 Kube.netes 集群中的主机虚拟机上运行?

[英]How do I connect to Docker, running on host VMs in a Kubernetes cluster from a container running in the same Kubernetes cluster?

我正在使用内部安装了 docker 的 docker 图像,以便运行任务来清理我的 kube.netes 集群中每个节点上的 docker 图像数据。 我尝试使用 Daemonset,因为它会在除 master 之外的每个节点上运行,但在 docker 容器内运行 cron 证明是徒劳的。

因此,我正在尝试使用具有以下属性的定期运行的 K8s Cronjob:

hostNetwork: true

      volumes:
        - name: dockersocket
          hostPath:
            path: /var/run/docker.sock

我正在运行一个 shell 脚本,该脚本从上述 CronJob 创建的容器中运行 docker 命令。

但是,当我尝试使用docker -H XXXX images (其中 XXXX 是 k8s 集群中一个节点的 IP)获取在 kube.netes 集群的节点上运行的所有图像时,出现以下错误:

Cannot connect to the Docker daemon at tcp://XXXX:2375. Is the docker daemon running?

难道我做错了什么? 如何从运行在 kube.netes 集群内的容器连接到运行在 kube.netes 集群节点上的 Docker?

框架挑战:你正在做的不是正确的方法。

尝试访问 Kube.netes 集群中的底层 Docker通常被视为一个坏主意,因为它很容易导致难以修复的损坏 state。

Kubelet 有内置的垃圾收集器 为什么不为此调整配置呢?

如果您在大型 PaaS 提供商之一上运行,您的节点周转率可能会足够高(来自自动升级/其他),这无论如何都不是问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM