Kubernetes 的 Deployment 是一种管理声明式更新的资源对象,它允许你描述应用的期望状态,并由 Deployment 控制器自动将当前状态改变为期望状态。Deployment 主要用于无状态应用的部署和扩展,但也可以用于有状态应用。
核心功能
- 自动化部署与回滚:Deployment 可以自动更新应用的实例(Pods),并在更新过程中保持应用的可用性。如果更新失败,Deployment 也能自动回滚到之前的版本。
- 声明式更新:你只需要声明应用的目标状态,Deployment 控制器就会负责改变实际状态以匹配目标状态。
- 扩展和收缩:可以通过修改 Deployment 中的副本数(replicas)来扩大或缩小应用的规模。
- 自我修复:如果某个 Pod 失败,Deployment 会替换它,确保定义的副本数量不变。
工作原理
- 定义 Deployment:通过 YAML 或 JSON 文件定义 Deployment,包括应用的容器镜像、副本数、更新策略等信息。
- 创建 Deployment:使用
kubectl apply -f deployment.yaml
命令创建 Deployment。Kubernetes API 服务器接收到创建请求后,记录期望的应用状态。 - Deployment 控制器响应:Deployment 控制器观察到期望状态的变化,开