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

时间:2020-08-21 08:35:30

标签: docker kubernetes devops kubernetes-cronjob

我正在使用其中安装了docker的docker映像,以便运行任务以清理kubernetes集群中每个节点上的docker映像数据。我尝试使用Daemonset,因为它将在除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.X是k8s群集中一个节点的IP,

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

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

1 个答案:

答案 0 :(得分:2)

Frame challenge:您正在做的事情不是正确的方法。

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

Kubelet具有built-in garbage collection。为什么不调整配置​​呢?

如果您在大型PaaS提供商之一上运行,则节点的营业额可能会很高(通过自动升级/其他方式),无论如何这都不成问题。