用于部署无状态的服务,这个最常用的控制器。可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、自动灾难恢复、一键回滚等功能。
虽然ReplicaSet可以确保在任何给定时间运行的Pod副本达到指定的数量,但是Deployment(部署)是一个更高级的概念,它管理ReplicaSet并为Pod和ReplicaSet提供声明性更新以及许多其他有用的功能,所以建议在实际使用中,使用Deployment代替ReplicaSet。
1、创建一个deployment 实例
cat deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
ports:
- containerPort: 80
image: nginx:1.20
在该例中:
- 创建名为
nginx-deployment
(由.metadata.name
字段标明)的 Deployment。 -
selector
字段定义 Deployment 如何查找要管理的 Pods。 在这里,你选择在 Pod 模板中定义的标签(app: nginx
)。 不过,更复杂的选择规则是也可能的,只要 Pod 模板本身满足所给规则即可
运行下面命令创建deployment
kubectl apply -f deployment.yml --record
注:--record标志可以将执行的命令写入资源注解,每个 Deployment 修订版本所执行过的命令。
2、运行 kubectl get deployments 检查deployment是否创建
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
deployment-nginx 3/3 3 3 47m
3、要查看deployment 上线状态,运行 kubectl rollout status deployment/deployment-nginx
kubectl rollout status deployment/deployment-nginx
deployment "deployment-nginx" successfully rolled out
4、要查看 Deployment 创建的 ReplicaSet(rs) ,运行 kubectl get rs
kubectl get rs
NAME DESIRED CURRENT READY AGE
deployment-nginx-7cf55fb7bb 3 3 3 31m
5、更新 deployment
- 比如需要更改镜像
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1 --record
也可以使用 kubectl edit 的方法实现
kubectl edit deployment/deployment-nginx
6、回滚deployment
首先检查deployment 的历史版本
kubectl rollout history deployment/deployment-nginx
deployments "nginx-deployment"
REVISION CHANGE-CAUSE
1 kubectl apply deployment.yaml --record=true
2 kubectl set image deployment/deployment-nginx nginx=nginx:1.16.1 --record=true
查看历史版本的详细信息
kubectl rollout history deployment/deployment-nginx --revision=2
回滚到之前的版本
kubectl rollout undo deployment/deployment-nginx --to-revision=2
7、缩放deployment
使用一下指令进行缩放副本数量
kubectl scale deployment/deployment-nginx --replicas=5 --recoed
#将名称为deployment-nginx这个副本数量扩充为5个副本,并且记录修订版本
比例缩放
RollingUpdate 的 Deployment 支持同时运行应用程序的多个版本。 当自动缩放器缩放处于上线进程(仍在进行中或暂停)中的 RollingUpdate Deployment 时, Deployment 控制器会平衡现有的活跃状态的 ReplicaSets(含 Pods 的 ReplicaSets)中的额外副本, 以降低风险。这称为 比例缩放。
maxSurge(最大增量):除当前数量外还要添加多少个实例。
maxUnavailable(最大不可用量):滚动更新过程中的不可用实例数。
可以运行一下命令根据自身需要更改maxsurge 和maxunavaliable
kubectl edit deployment/deployment-nginx
编辑文件,找到maxsurge和maxunavailable,更改大小
8、暂停、恢复deployment文章来源:https://www.toymoban.com/news/detail-411863.html
你可以在触发一个或多个更新之前暂停 Deployment,然后再恢复其执行。 这样做使得你能够在暂停和恢复执行之间应用多个修补程序,而不会触发不必要的上线操作。文章来源地址https://www.toymoban.com/news/detail-411863.html
kubectl rollout pause deployment.v1.apps/nginx-deployment #暂停
kubectl rollout resume deployment.v1.apps/nginx-deployment #恢复
到了这里,关于kubernetes之deployment的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!