pod是Kubernetes中的基本部署单元。通过《(五)Kubernetes系列之pod》学习你已知道如何手动创建、监督和管理它们。但在实际的应用中,你希望你的部署能自动保持运行,并且保持健康,不需要任何的手动干预。所以你几乎不会直接创建pod,而是创建ReplicationController或Deployment这样的资源控制器来创建并管理实际的pod。
Deployment控制器通过自定义Pod模板设置相应控制参数实现水平伸缩,以调节正在运行的相同Pod数。如果Pod或主机出现故障,则会自动启用新的Pod进行补充,以保证在集群中部署的Pod数与配置中的Pod数保持一致。Deployment控制器以ReplicaSet控制器为基础,增加了更灵活的生命周期管理功能,例如,滚动更新和回滚。
1.Deployment控制器的创建
1.1 创建模板文件
vi nginxdeployment.yml
内容如下:
说明:
apiVersion表示使用的API版本
kind表示要创建的资源对象
metadata表示该资源对象的元数据。一个资源对象可拥有多个元数据,资源对象的name项,表示当前资源的命名。
spec表示该资源对象的具体设置
replicas:表示在控制器下托管的Pod需要保持的副本数量
selector/matchLabels:表示一个或多个自定义标签(label),其形式为键值对
template:Pod模板
1.2 执行命令使用1.1的模板创建deployment
kubectl apply -f [模板名] –record
注意:一定要带参数–record,这样会把每次修改Deployment控制器时所使用的命令记录到备注字段中,
Deployment控制器变更历史
1.3查看deployment控制器
kubectl get deployments
说明:Deployment控制器会创建3个Pod,可通过命令 kubectl get pods查看pod的状态
2.Deployment控制器的伸缩
vi nginxdeployment.yml
修改副本数为6
执行创建命令
kubectl apply -f [模板名] –record
查看deployment控制器
kubectl get deployments
3.Deployment控制器更新
Recreate:创建新的Pod之前终止所有现有的Pod。
RollingUpdate:以滚动更新的方式更新Pod,通过maxUnavailable和maxSurge参数来控制滚动更新过程。
3.1Recreate方式
编辑deployment文件
vi nginxdeployment.yml
执行创建命令
kubectl apply -f [模板名] –record
查看deployment
kubectl get deployments
可见AVAILABLE为0,说明该Deployment控制器下的所有Pod都暂时不可用。稍等一段时间会变成可用状态
3.2RollingUpdate方式
maxUnavailable:更新过程中能够进入不可用状态的Pod 的最大值或相对于总副本数的最大百分比。
maxSurge:能够额外创建的Pod数或相对于总副本数的百分比
执行创建命令
kubectl apply -f [模板名] –record
查看deployment
kubectl get deployments
4.Deployment控制器回滚
4.1查看的历史记录
kubectl rollout history deployment [Deployment名称}]
kubectl rollout undo deployment [Deployment名称}] –to-revision=[REVISION版本号]