我正在使用其中安装了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?
答案 0 :(得分:2)
Frame challenge:您正在做的事情不是正确的方法。
通常试图访问Kubernetes集群中的底层Docker是一个坏主意,因为它很容易导致损坏状态,难以修复。
Kubelet具有built-in garbage collection。为什么不调整配置呢?
如果您在大型PaaS提供商之一上运行,则节点的营业额可能会很高(通过自动升级/其他方式),无论如何这都不成问题。