我有一个正在运行的k3d Kubernetes集群:
$ kubectl cluster-info
Kubernetes master is running at https://0.0.0.0:6550
CoreDNS is running at https://0.0.0.0:6550/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://0.0.0.0:6550/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
我有一个python脚本,它使用kubernetes client api并管理名称空间、部署、pod等。这在我的本地环境中工作得很好,因为我已经安装了所有必需的python模块,并且可以直接访问我的本地k8s集群。我的目标是实现容器化,以便为我的同事在他们的系统上成功运行相同的脚本。
在docker容器中运行相同的python脚本时,我收到连接错误:
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='172.17.0.1', port=6550): Max retries exceeded with url: /api/v1/namespaces (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f8b637c5d68>: Failed to establish a new connection: [Errno 113] No route to host',))
172.17.0.1
是我的docker0
网桥地址,因此假设它将解析或转发流量到我的本地主机。我已经尝试从引用server: https://0.0.0.0:6550
的本地.kube/config
加载k8s配置,还使用server: https://172.17.0.1:6550
创建了一个单独的配置文件,两者都给出了相同的No route to host
错误(HTTPSConnectionPool中各自的ip地址(host=...))
我的一个想法是在容器外部运行一个socat进程,并通过隧道从容器内部通过从外部安装的网桥套接字进行通信,但看起来我需要使用的docker镜像没有安装socat。然而,我感觉真正的解决方案应该比所有这些都简单得多。
当然,还有其他实例需要访问停靠在停靠网络之外的k8s集群。这种连接通常是如何建立的?
发布于 2021-05-12 00:37:54
使用docker network
命令创建预定义网络
您可以传递--network
以将k3d附加到现有的Docker网络,也可以传递给docker run
以对另一个容器执行相同的操作
https://stackoverflow.com/questions/67339123
复制相似问题