如何从同一个Kubernetes集群中运行的容器连接到在Kubernete集群中的主机VM上运行的Docker



我正在使用一个安装了docker的docker映像,以便运行任务来清理kubernetes集群中每个节点上的docker镜像数据。我尝试使用Daemoset,因为它将在除master之外的每个节点上运行,但在docker容器中运行cron被证明是徒劳的。

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

hostNetwork: true

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

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

然而,当我尝试使用docker -H X.X.X.X images在kubernetes集群的一个节点上运行所有映像时,其中X.X.X是k8s集群中一个节点的IP,我得到以下错误:

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

我做错什么了吗?如何从运行在kubernetes集群内的容器连接到运行在kubernetes集群节点上的Docker?

框架挑战:您所做的不是正确的方法。

试图访问Kubernetes集群中的底层Docker通常被视为一个坏主意,因为它很容易导致难以修复的损坏状态。

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

如果你在一家大型PaaS提供商上运行,你的节点周转率可能会足够高(来自自动升级/其他任何方面(,因此这不是一个问题。

最新更新