k8s deployment

deployment

假设 pod 一开始使用v1版本的镜像运行第一个版本的应用。然后开发了一个新版本的应用打包成镜像,并将其推送到镜像仓库,标记为v2,接下来想用这个新版本替换所有的 pod。由于 pod 在创建之后,不允许直接修改镜像, 只能通过删除原有 pod 并使用新的镜像创建新的 pod替换。

有两种办法更新所有 pod:

  1. 直接删除所有现有的 pod,然后创建新的 pod。
  2. 先创建新的 pod,等待运行成功之后,再删除旧的 pod。

第一种方法会造成服务在一定时间内的不可用。第二种方法需要同时支持两个版本同时提供对外服务。

滚动升级

执行滚动升级操作来逐步替代原有的 pod,而不是同时创建所有新的 pod 并一并删除所有旧的 pod。可以通过逐步对旧版本的 ReplicationController 进行缩容并对新版本的进行扩容, 来实现上述操作。在这个过程中,服务的 pod 选择器同时包含新旧两个版本的 pod, 因此它将请求切换到这两组 pod。

deployment 和 replicaset

Deployment 不能直接管理 pod,而是创建了 ReplicaSet 来管理 pod。ReplicaSet的名称中也包含了其 pod 模板的哈希值。

相关推荐
Vio7251 小时前
Eureka注册中心
云原生·eureka
缘的猿1 小时前
云计算划分标准与Kubernetes NetworkPolicy深度解析
容器·kubernetes·云计算
Yeats_Liao2 小时前
遗留系统微服务改造(二):数据迁移实战攻略与一致性保证
微服务·云原生·架构
野蛮人6号2 小时前
黑马微服务P3快速入门入门案例无法跑通解决方案,本文解决了数据库连接和java版本不匹配的问题
微服务·云原生·架构
matlab的学徒2 小时前
Kubernetes(K8S)全面解析:核心概念、架构与实践指南
linux·容器·架构·kubernetes
闲人编程4 小时前
将你的Django/Flask应用部署到云服务器(Docker实战)
服务器·docker·容器·django·flask·部署·web
没有口袋啦4 小时前
K8s集群多节点部署(Ubuntu22.04)
docker·云原生·容器·kubernetes
荣光波比4 小时前
K8S(三)—— 基于kubeadm 1.20版本部署Kubernetes集群与Harbor私有仓库实战
云原生·容器·kubernetes
IvanCodes4 小时前
七、Docker核心技术:深入理解网络模式 (Bridge, Host, None, Container)
网络·docker·容器