【问题标题】:Kubernetes API for provisioning pods-as-a-service?用于配置 Pod 即服务的 Kubernetes API?
【发布时间】:2015-12-25 04:40:29
【问题描述】:

目前我有一个应用程序 (myapp),它部署为在“原始”(Ubuntu) VM 上运行的 Java Web 应用程序。在生产环境中,在任何给定时间基本上都有 5 到 10 个虚拟机在运行,所有虚拟机都在 nginx 负载均衡器后面进行负载均衡。每个 VM 都由 Chef 管理,Chef 注入正确的环境变量并为应用程序提供对生产有意义的运行时参数。再说一遍:通过 nginx 进行负载平衡,通过 Chef 进行配置。

我现在有兴趣将我未来的工作负载容器化,并将这个应用程序移植到 Docker/Kubernetes。 我正在尝试了解 Kubernetes 提供的哪些功能可以取代我的应用对 nginx 和 Chef 的依赖。

所以我的担忧:

  • Kube-Proxy(或任何其他 Kubernetes 工具)是否提供子域或其他负载平衡 URL,可以对任意数量的 pod 副本进行负载平衡。换句话说,如果我将新容器化的应用程序/映像“推送”到 Kubernetes API,Kubernetes 是否有办法使映像可用,例如,10 个 pod 副本都在 myapp.example.com 后面进行负载平衡?如果不是,可以在 Kubernetes 和网络软件 (DNS/DHCP) 之间进行哪些集成?
  • Kubernetes(比如说,通过etc?)是否提供任何类型的键值基配置?最好向 Kubernetes API 发送一个命令,并给它贴上myapp:nonprodmyapp:prod 之类的标签,然后让 Kubernetes 将正确的 KV 对“注入”到正在运行的容器中。例如,也许在“nonprod”环境中,应用程序连接到名为mydb-nonprod.example.com 的 MySQL 数据库,但在 prod 中它连接到 RDS 集群。什么的。
  • Kubernetes 是否提供类似服务注册表的功能来替代 Consul/ZooKeeper?

【问题讨论】:

    标签: load-balancing kubernetes configuration-management


    【解决方案1】:

    答案:

    1) Kubernetes 中的 DNS 子域:

    https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns

    此外,每个服务负载均衡器都会获得一个静态 IP 地址,因此如果您想以该 IP 地址为目标,还可以对其他 DNS 名称进行编程。

    2) 键/值对

    在创建时,您可以注入任意键/值环境变量,然后在您的脚本/配置中使用它们。例如你可以连接到 ${DB_HOST}

    虽然对于您的具体示例,我们建议使用命名空间 (http://kubernetes.io/v1.0/docs/admin/namespaces/README.html),您可以拥有一个“prod”命名空间和一个“dev”命名空间,并且服务的 DNS 名称在这些命名空间内解析(例如 mysql.prod.cluster .internal 和 mysql.dev.cluster.internal)

    3) 是的,这就是 DNS 和服务对象提供的 (http://kubernetes.io/v1.0/docs/user-guide/walkthrough/k8s201.html#services)

    【讨论】:

    • 感谢@brendan (+1) 我感谢您提供的可靠反馈。如果您不介意,可以快速跟进:关于 KV 对,您提到“创建时间您可以...”,这是否意味着一旦 pod/service创建后,它的 KV 对是不可变的吗?随着应用程序的发展并需要新的特定于环境的配置,这将成为一个问题......想法?再次感谢!
    • 一般来说,服务似乎不需要像Registrator 这样的工具。你能想到为什么有人需要在 Kubernetes 集群内(或以某种方式)运行 Registrator 吗?
    猜你喜欢
    • 2021-09-08
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2019-03-13
    • 1970-01-01
    • 2018-05-09
    • 2020-08-04
    相关资源
    最近更新 更多