Kubernetes Deployment
本文将介绍 Kubernetes 中的 Deployment,即部署。
一、什么是 Deployment?
Pod 是对 “运行” 的描述,它不能满足实际的部署需求,因为部署不止有运行,还包括多实例、高可用、版本更新等复杂操作。
Kubernetes 设计了 Deployment,它是对 “部署” 的描述,它将会监控并管理 Pod,保证始终运行着 “期望数量” 的 Pod。
二、Kubernetes 对 Deployment 的设计
首先,Kubernetes 的设计还是符合 “单一职责” 和 “组合优于继承” 原则的。
具体请看:
其次,Deployment 和 Pod 并不是严格绑定的,而是要求 spec.selector.matchLabels
应该与 template.metadata.labels
完全相同,从而通过 selector 间接找到 Pod 对象。这是因为,虽然 Pod 是由 Deployment 创建出来的,但在复杂的运维场景下,这个 Pod 很可能需要被其它资源对象管理,因此 Kubernetes 通过这种方式让 Deployment 和 Pod 不严格绑定,而是呈现一种弱引用的关系。
三、Deployment 的配置文件
1 |
|
参考
- Kubernetes
- Kubernetes 入门实战课
- 深入剖析 Kubernetes