一、Deployment 控制器基本概念 Deployment 控制器是 Kubernetes 中用于管理应用程序部署和更新的高级控制器。 它提供了一种声明式的方法来定义和管理应用程序的生命周期, 包括创建、更新和回滚等操作。 Deployment 控制器(通过管理 ReplicaSet 来确保应用程序的期望状态与实际状态保持一致),从而实现高可用性和弹性伸缩。 二、声明式与命令式 # kubectl replace -f deployment.yaml 命令式创建deployment控制器, 不支持部分更新,会覆盖之前的配置 # kubectl apply -f deployment.yaml 声明式创建deployment控制器, 支持部分更新,会合并之前的配置, 只更新与新配置中不同的部分 apply 可以结合 -f or -k 参数从文件或者目录中读多个配置文件,并根据当前集群资源状态进行更新 # kubectl diff -f deployment.yaml 比较当前集群实际运行的资源清单对象与当前资源清单文件对象的差异 三、Deployment 控制器资源清单 # 资源清单例子 apiVersion: apps/v1 # 接口组/版本 kind: Deployment # 资源类型:Deployment 控制器 metadata: labels: app: myapp-deployment name: myapp-deployment spec: selector: metadata: app: myapp-deployment template: metadata: labels: app: myapp-deployment spec: containers: - name: myapp-container image: nginx:1.7.9 ports: - containerPort: 80 # 上边的Deployment控制器清单没在spec中设置replicas,默认为 1 三、Deployment常用命令 # kubectl create -f deployment.yaml 创建Deployment控制器 # kubectl create -f deployment.yaml --record 创建Deployment控制器, 并记录变更历史 # kubectl apply -f deployment.yaml 创建或更新Deployment控制器 # kubectl scale deployment myapp-deployment --replicas=3 扩缩容Deployment控制器 # kubectl autoscale deployment myapp-deployment --min=10 --max=15 --cpu-percent=80 基于CPU使用率自动扩缩容Deployment控制器 # kubectl rollout status deployment myapp-deployment 查看Deployment控制器的滚动更新状态 # kubectl rollout undo deployment myapp-deployment 回滚Deployment控制器到上一个版本 # kubectl set image deployment/myapp-deployment myapp-container=nginx/nginx:1.9.1 更新Deployment控制器的镜像