本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。

基于容器的应用程序设计原则

如今,几乎任何应用程序都可以放入容器中并运行。然而,创建云原生应用程序——即被Kubernetes等云原生平台有效自动化和编排的容器化应用程序——需要额外的努力。云原生应用程序预料到故障;即使基础设施发生中断,它们也能可靠地运行和扩展。为了提供这些功能,Kubernetes等云原生平台对应用程序施加了一系列契约和约束。这些契约确保应用程序符合某些约束,并允许平台自动化应用程序管理。

我总结了七项原则,供容器化应用程序遵循以实现完全云原生。

| ----- | | | | 容器设计原则 |

这七项原则涵盖了构建时和运行时关注点。

构建时

  • 单一关注点:每个容器处理一个单一的关注点并做好它。
  • 自包含:容器只依赖于Linux内核的存在。额外的库在容器构建时添加。
  • 镜像不变性:容器化应用程序旨在保持不变,一旦构建完成,预计在不同环境之间不会改变。

运行时

  • 高可观察性:每个容器必须实现所有必要的API,以帮助平台以最佳方式观察和管理应用程序。
  • 生命周期一致性:容器必须有一种方法来读取来自平台的事件,并通过对这些事件做出反应来保持一致。
  • 进程可处置性:容器化应用程序必须尽可能短暂,并随时准备被另一个容器实例替换。
  • 运行时限制:每个容器必须声明其资源需求,并将资源使用限制在所指示的需求范围内。构建时原则确保容器具有正确的粒度、一致性和结构。运行时原则规定了必须实现哪些功能,以便容器化应用程序拥有云原生功能。遵守这些原则有助于确保您的应用程序适用于Kubernetes中的自动化。

白皮书可免费下载

要了解更多关于为Kubernetes设计云原生应用程序的信息,请查看我的Kubernetes Patterns一书。

Twitter:

博客:http://www.ofbizian.com
领英

Bilgin Ibryam (@bibryam) 是红帽公司的首席架构师,ASF 的开源提交者,博主,作者和演讲者。他是《Camel 设计模式》和《Kubernetes 模式》两本书的作者。在他的日常工作中,Bilgin 热衷于指导、培训和领导团队在分布式系统、微服务、容器和云原生应用程序方面取得成功。