【问题标题】:What does it mean for the application developer to run an application in Kubernetes?应用程序开发人员在 Kubernetes 中运行应用程序意味着什么?
【发布时间】:2016-05-12 04:45:07
【问题描述】:

通常的应用程序开发人员(例如 J2EE)在设计应用程序时不会优先考虑与基础架构相关的问题。很难与传统的非可编程基础架构进行交互。一种传统的方法是构建一个 .war 文件,然后该文件可以在 JBoss 等应用服务器中运行。 Spring等传统框架(除了新版本的Spring Cloud)都以此为前提。 现在,如果有一个容错的、弹性的部署运行时可用,例如 Kubernetes 提供的,似乎以同样的方式编写业务应用程序会忽略运行时提供的调度等功能。 一个具体的问题:应用程序通常从运行时(即 Kubernetes、Mesos 等)API 中交谈(并从中受益)吗?如果是这样,您能否举一个很好的例子。 我发现的大部分资源都更多地集中在运维方面,而不是开发方面。

【问题讨论】:

    标签: kubernetes spring-cloud docker-swarm mesos


    【解决方案1】:

    不,Kubernetes 的意义在于您的应用不必“意识到”它。 (Mesos 有更多“应用需要了解我们”的理念。)

    在 Kubernetes 中,每个 pod 只是启动并侦听一个端口。该应用程序不会注册它的存在,甚至不会告诉它是什么版本。当它需要与另一个服务通信时,它会使用 DNS(甚至是固定的服务 IP)来为该下游服务查找 LB。

    通常,应用程序开发人员在设计应用程序时不会优先考虑与基础设施相关的问题

    一般来说,只需要担心两件事:

    1) 使您的服务无状态,因此您将状态推送到边缘(数据库和/或客户端)。这允许 Kubernetes 通过运行更多副本来“扩展”您的应用程序。有状态服务几乎不可能扩展。

    2) 将您的应用分解为多个“微服务”,这样您就可以扩展“产品视图”功能,而无需扩展“客户登录”功能。

    3) 可选:前往12factor 应用程序。

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多