企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
[TOC] # Deployment (针对无状态服务) Deployment用来管理`Pod`和`ReplicaSet`的,用来代替以前老版本的ReplicationController Deployment可以用来: * 滚动升级和回滚 * 扩容和缩容 * Deployment暂停和继续 先定义一个yaml ~~~ apiVersion: app/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: match:labels: app: nginx #这里的标签必须和template中定义的标签一样。不然会报错 replicas: 3 #定义创建3个副本 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 ~~~ ### 字段说明 ![](https://img.kancloud.cn/7a/a5/7aa52f59334939bf100d3dfd2ac8f797_488x50.png) READY: 表示一共有多少个副本准备就绪 UP-TO-DATE: 表示最新当前有几个副本 AVAILABLE:表示可用的副本数 AGE: 表示运行时间 ### 操作示例 ##### 扩容 原本定义3个副本,现在扩容到10个副本 ~~~ kubectl scale deployment nginx-deployment --replicas 10 ~~~ ##### 缩容 原本定义3个副本,现在缩容到2个副本 ~~~ kubectl scale deployment nginx-deployment --replicas 2 ~~~ ##### 更新镜像 从nginx:1.7.9更新到nginx:1.9.1 ~~~ kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1 ~~~ ##### 回滚 回滚到上一个步骤 ~~~ kubectl rollout undo deployment/nginx-deployment ~~~ ##### 查看可用的回滚版本 ~~~ kubectl rollout history deployment nginx-deployment ~~~ ##### 查看滚动状态 ~~~ kubectl rollout status deployments nginx-deployment ~~~ ##### 监控更新过程 ~~~ kubectl get deployments myapp-deploy --watch ~~~ ##### 在线修改yaml 使用edit命令 ~~~ kubectl edit deployment/nginx-deployment deployment "nginx-deployment" edited ~~~ ### 滚动机制 * 新创建: 当 Deployment controller 观测到有新的 deployment 被创建时,会直接创建出一个新的 ReplicaSet 来做这件事。 * 变更: 当更新了一个的已存在并正在进行中的 Deployment,每次更新 Deployment都会创建一个新的 ReplicaSet并扩容它,同时回滚之前扩容的 ReplicaSet ,将它添加到旧的 ReplicaSet 列表中,开始缩容。 ### 暂停和恢复 在暂停状态下的更新操作,多次更改,只会触发一次 rolling 记录 ~~~ kubectl rollout pause deployment/nginx-deployment ~~~ ### 回滚策略 ##### 记录保留 `.spec.revisionHistoryLimit`默认设置保留数量为 2。 在 Deployment 中设置来指定保留多少旧的 ReplicaSet。余下的将在后台被当作垃圾收集。 ##### 滚动更新数量 `.spec.strategy`指定新的Pod替换旧的Pod的策略 ### 遗留 (还有好多东西,等需要的时候,再去网上查吧,现在暂时先不看了)