【问题标题】:Interconnect a Kubernetes cluster with a Docker network将 Kubernetes 集群与 Docker 网络互连
【发布时间】:2021-01-04 01:56:01
【问题描述】:

我正在尝试启用 Kubernetes (K8s) pod 和 Docker 容器之间的通信,但我找不到在 Windows 上执行此操作的方法。非常感谢您的帮助。

场景描述:

n 个 K8s pod 由一个(也是唯一的)容器组成:此时 Postman 访问的 Go 微服务,它本身应该访问数据库。

为了实现对 Pod 的负载均衡访问,使用 NodePort 将 Kubernetes 服务置于顶部。到目前为止一切正常。

但是 K8s-Pod/Go-microservice Docker-container/db 部分看不到对方。 Go 微服务显然表示“db”无法解析。容器 db 本身位于用户定义的 docker 网络中(称为“mynw”);它的类型是一座桥。

有人知道如何以最简单的方式实现这一目标吗? (我的意思是没有第三方/tierce 的东西、繁重的代理配置等)

谢谢!

【问题讨论】:

    标签: docker networking kubernetes


    【解决方案1】:

    您可以在 k8s 中创建一个无头服务,其端点指向您的数据库容器。然后,您必须指示您的 Go 服务使用该无头服务作为数据库连接。

    【讨论】:

    • 您的建议是成功的线索。非常感谢!
    • 与其他人分享如何做的更详细的解释: 1. 部署你的 K8s 微服务 2. 用 K8s 服务公开它 3. 构建一个服务说 Headless 因为它没有引用任何豆荚;它具有spec.type: ClusterIPspec.clusterIP: None 的特殊性,因此没有开箱即用的IP 地址;注意端口 4. 使用 docker 容器的 IP 地址和端口构建一个端点。要获取此 IP,请在您的数据库容器上执行 docker container inspect。瞧!
    【解决方案2】:

    在 bserdar 提到的headless services 之上,如果您的数据库具有正确的 DNS 名称,您还可以使用type externalName 的服务。

    【讨论】:

    • 它没有但感谢您的建议。我去看看我的个人知识!谢谢。
    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 2019-01-17
    • 2019-10-16
    • 1970-01-01
    • 2015-11-29
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多