本文已发表一年多。较旧的文章可能包含过时的内容。请确认页面信息自发布以来没有出现错误。
基于容器的应用程序设计原则
如今,几乎任何应用程序都可以放入容器中并运行。然而,创建云原生应用程序——由 Kubernetes 等云原生平台有效自动化和编排的容器化应用程序——需要额外的努力。云原生应用程序能够预见故障;即使基础设施发生中断,它们也能可靠运行和扩展。为了提供这些能力,像 Kubernetes 这样的云原生平台对应用程序施加了一系列契约和约束。这些契约确保其运行的应用程序符合某些约束,并允许平台自动化应用程序管理。
我总结了七项原则,容器化应用程序应遵循这些原则才能完全实现云原生。
| ----- | | | | 容器设计原则 |
这七项原则涵盖构建时和运行时两方面的考量。
构建时
- 单一关注点:每个容器只处理一个关注点,并把它做好。
- 自包含:容器仅依赖于 Linux 内核的存在。构建容器时会添加额外的库。
- 镜像不可变性:容器化应用程序应是不可变的,一旦构建,在不同环境之间不应发生变化。
运行时
- 高可观测性:每个容器必须实现所有必要的 API,以帮助平台以最佳方式观测和管理应用程序。
- 生命周期一致性:容器必须有办法读取来自平台的事件,并通过对这些事件做出反应来保持一致。
- 进程可处置性:容器化应用程序应尽可能短暂,并随时准备被另一个容器实例替换。
- 运行时限制:每个容器必须声明其资源需求,并将资源使用限制在指定的范围内。构建时原则确保容器具有正确的粒度、一致性和结构。运行时原则规定了必须实现哪些功能,才能使容器化应用程序具备云原生功能。遵循这些原则有助于确保您的应用程序适用于 Kubernetes 的自动化。
白皮书可免费下载
要了解更多关于为 Kubernetes 设计云原生应用程序的信息,请查阅我的《Kubernetes Patterns》一书。
Twitter:
博客:http://www.ofbizian.com
Linkedin
Bilgin Ibryam (@bibryam) 是 Red Hat 的首席架构师,ASF 的开源提交者,博主,作家和演讲者。他是《Camel Design Patterns》和《Kubernetes Patterns》两本书的作者。在日常工作中,Bilgin 乐于指导、培训和领导团队,帮助他们在分布式系统、微服务、容器和云原生应用程序方面取得成功。