首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在kubernetes中滚动更新期间,如果用户/客户端命中,那么他们将获得什么信息?更新信息还是以前的信息?

在 Kubernetes 中进行滚动更新期间,如果用户/客户端命中,他们将获得以前的信息。

滚动更新是指在更新应用程序时,逐步替换旧的容器实例为新的容器实例,以确保应用程序的高可用性和零停机时间。在滚动更新期间,Kubernetes 会逐步将新的容器实例添加到服务中,并逐步从服务中删除旧的容器实例。

当用户/客户端发送请求时,请求会被路由到服务中的某个容器实例。在滚动更新期间,如果用户/客户端命中的是旧的容器实例,他们将获得以前的信息,即旧版本的应用程序响应。这是因为滚动更新过程中,旧的容器实例仍然在运行,直到新的容器实例完全替换旧的容器实例。

需要注意的是,滚动更新过程中,Kubernetes 会根据配置的策略来控制新旧容器实例的比例和替换速度,以确保应用程序的稳定性和可用性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kubernetes 零宕机滚动更新

在使用过程中我们还可以指定 Kubernetes 在更新期间如何处理多个副本的切换方式,比如我们有一个3副本的应用,在更新的过程中是否应该立即创建这3个新的 Pod 并等待他们全部启动,或者杀掉一个之外的所有旧的...如果我们在进行滚动更新应用的过程中启动测试,则可能会看到一些请求无法连接的情况: ?...我们会看到在滚动更新过程中的行为可能会有所不同,具体的还是需要取决于测试的配置参数,和通过 Ingress 的连接相比,从集群内部连接到服务的客户端可能不会遇到那么多的失败连接。...但是 Kubernetes Ingress 连接到实例的方式稍有不同,这就是为什么当客户端通过 Ingresss 连接到应用程序的时候,我们会在滚动更新过程中查看到不同的宕机行为。...现在,当我们去查看滚动更新期间的 Pod 行为时,我们将看到正在终止的 Pod 处于 Terminating 状态,但是在等待时间结束之前不会关闭的,如果我们使用 Fortio 重新测试下,则会看到零失败请求的理想行为

1.6K21

Kubernetes零宕机滚动更新

在使用过程中我们还可以指定 Kubernetes 在更新期间如何处理多个副本的切换方式,比如我们有一个3副本的应用,在更新的过程中是否应该立即创建这3个新的 Pod 并等待他们全部启动,或者杀掉一个之外的所有旧的...如果我们在进行滚动更新应用的过程中启动测试,则可能会看到一些请求无法连接的情况: 通过Ingres 代理测试 fortio load -c 8 -qps 1000 -t 60s "https://nginx...但是 Kubernetes Ingress 连接到实例的方式稍有不同,这就是为什么当客户端通过 Ingresss 连接到应用程序的时候,我们会在滚动更新过程中查看到不同的宕机行为。...现在,当我们去查看滚动更新期间的 Pod 行为时,我们将看到正在终止的 Pod 处于 Terminating 状态,但是在等待时间结束之前不会关闭的,如果我们使用 Fortio 重新测试下,则会看到零失败请求的理想行为...而且上面的方式是只适用于短连接的,对于类似于 websocket 这种长连接应用需要做滚动更新的话目前还没有找到一个很好的解决方案,有的团队是将长连接转换成短连接来进行处理的,我这边还是在应用层面来做的支持

61140
  • Kubernetes Deployment控制器

    什么是控制器 控制器种类 Deployment作用 资源定义 PodTemplate pod-temaplte-hash标签 滚动更新 更新回退 水平扩展/收缩 更新暂停/恢复 更新失败原因 什么是控制器...控制器是指可以对Pod进行管理的一些工作负载,他们可以按照用户的期待来完成一系列Pod的操作。...kubectl describe deployment nginx-deployment $ kubectl get pods -o wide 在Deployment中的简要信息中,主要有以下信息...$ kubectl describe deployments nginx-deployment 从上图可以看出,Kubernetes在进行更新时并不是粗暴将原来的ReplicaSet直接下线,创建新的...在实际的生产环境中,我们可以能不仅需要回退到上一个版本中,有可能需要回退到上上个版本或者特定的版本,Kubernetes会为我们保存一些更新记录,此时这些记录就派上用场,我们可以通过这些记录可以回滚到特定版本

    67420

    【重识云原生】第六章容器基础6.4.9.5节——端点切片(Endpoint Slices)

    在某些情况下,它会将 Endpoint 资源限制为 5000 个 Pod IP。对于大多数用户而言,这没什么关系,但是对于接近这个大小的 Service 而言,就有大问题了。         ...想象一下,如果进行一次滚动更新,共有 5000 个 Pod 全部被替换,那么传输的数据量将超过 22 TB。...使用 EndpointSlices 时,添加或移除单个 Pod 对于正监视变更的客户端会触发相同数量的更新, 但这些更新消息的大小在大规模场景下要小得多。         ...如果对于处于终止中的端点,ready 可能是 true,那么对于现有的客户端来说可能是有些意外的, 因为从始至终,Endpoints 或 EndpointSlice API 从未包含处于终止中的端点。...Deployment 的滚动更新为重新为 EndpointSlice 打包提供了一个自然的机会,所有 Pod 及其对应的端点在这一期间都会被替换掉。

    2.1K30

    石墨文档基于k8s的Go微服务实践(上)

    日志是如何记录、如何采集、如何滚动?我们如何对服务进行观测?Metrics 指标如何采集?采集后的指标如何展示?服务如何实现健康检查、存活检查?服务如何滚动更新?...image.png Kubernetes在微服务中的作用就如同建高楼的地基,做了很多基础工作,统一了大量的基础设施标准,以前我们要实现服务的启动、配置、日志采集、探活等功能需要写很多中间件,现在我们只需要写写...image.png 然后我们就可以在prometheus中或者二进制中看到我们框架的版本,如果框架某个版本真有什么大bug,可以查询线上运行版本,然后找到对应的应用,让他们升级。...发布微服务应用版本,因为有了Kubernetes就更加简单,我们只需要发布系统调用一下deployment.yml就能实现,应用的拉取镜像、启动服务、探活、滚动更新等功能。...然后在结合我们的滚动更新,我们服务可以很优雅的启动起来; (liveness、readness必须同时设置,而且策略必须有差异,否则会带来一些问题) 2.4.5 调用阶段 我们在使用Kubernetes

    97860

    如何在 Kubernetes 滚动部署中实现真正的零停机时间:避免断开的客户端连接

    对用户的负面影响之一是连接中断。我本来很想讨论客户端连接断开的影响,但不是在本文中。 默认情况下,Kubernetes 部署策略涉及滚动部署。是的!滚动部署听起来很有趣,但还有更多。...滚动部署期间会发生什么情况? 滚动部署意味着逐步将当前容器替换为新容器。在此过程中,总是有从微秒到秒的停机时间。对于用户群较低的应用程序来说,它可能微不足道。...在继续之前,以下是本教程的先决条件: Kubernetes 知识 使用Docker的经验 Pod 的启动阶段 当 Pod 在未配置就绪探测的滚动部署中启动时,端点 Controller 会使用容器的端点更新相应的服务对象...当 API 服务器收到来自客户端或滚动部署期间的 Pod 删除通知时,它首先在 etcd 中修改 Pod 的状态,然后通知端点控制器和 Kubelet。...我们已经能够确定在滚动部署期间连接断开的原因;那么我们如何解决这个问题呢? 解决方案 Kubernetes 从未被设计为“即插即用”的编排工具;它需要适当的配置以相应地适应每个用例。

    27710

    Kubernetes(k8s)入门学习

    运行过程中,如果某一个POD出现异常或者异常退出,ReplicaSet(RS)会保证副本始终为2,在另外一台机器重新调度起来一个。   ...停止掉,停掉以后,将旧的ReplicaSet(RS)清理掉,此时整个服务更新的过程就完成了,就进行了滚动部署。   ...比如,此时旧的应用就是左边的两个POD,如果更新这个应用的时候,一般我们更新的就是Deployment,Deployment会自动的帮我们再创建一个ReplicaSet(RS),创建一个副本集,会滚动先启动一个新版本的...(RS)将剩下的这一个POD停止掉,停掉以后,将旧的ReplicaSet(RS)清理掉,此时整个服务更新的过程就完成了,就进行了滚动部署。...5)、Scheduler调度器:会收集每一个Worker节点的详细信息,包括他们的资源,内存,CPU,包括他们节点运行什么服务,等等各种各样的信息。

    60810

    石墨文档基于 Kubernetes 的微服务实践

    日志是如何记录、如何采集、如何滚动?我们如何对服务进行观测?Metrics 指标如何采集?采集后的指标如何展示?服务如何实现健康检查、存活检查?服务如何滚动更新?...Kubernetes 在微服务中的作用就如同建高楼的地基,做了很多基础工作,统一了大量的基础设施标准,以前我们要实现服务的启动、配置、日志采集、探活等功能需要写很多中间件,现在我们只需要写写 yaml...将框架中影响功能的核心错误全部设置为 panic,让程序尽快的报错,并且将错误做好高亮,在错误信息里显示 Panic 的错误码,组件、配置名、错误信息,尽快定位错误根因。...然后我们就可以在 prometheus 中或者二进制中看到我们框架的版本,如果框架某个版本真有什么大 bug,可以查询线上运行版本,然后找到对应的应用,让他们升级。...然后在结合我们的滚动更新,我们服务可以很优雅的启动起来。

    44520

    改善十年应用的部署体验

    2金丝雀(精简版) 我们的第一个想法是采用金丝雀部署策略。在“金丝雀发布”期间,在将所有流量切换到新服务之前,将一小部分流量发送到服务的新版本,以确定它是否 “安全”。 为什么叫这个名字?...Web 应用对每一个心情求都重新检查这个文件,并使用这些信息在两个不同的生产 Kubernetes 命名空间之间进行负载均衡搜索流量,这两个命名空间仍然被称为 flip 和 flop。...推动部署的工程师通过显示当前滚动发布状态的用户界面来管理 Switchboard,它还可以选择暂停或者回滚部署。...在 Switchboard 中,我们主要依靠 Kubernetes 内置的自动伸缩功能来扩展部署期间的新集群。...但是,如果他们需要的话,可以暂停滚动发布,检查当前的结果。Search 部署人员至少每月使用一次 Switchboard 来暂停滚动发布。我们以前根本就没有这个选项。

    33830

    K8s也面向对象?学会这三要素,用K8s就跟编程一样

    不过你反过来想一想,既然都有多年的面向对象经验了,学学面向对象的K8s不还得手拿把攥啊。 在K8s中,对象是系统中持久化的实体,K8s 使用对象来表示集群中各种资源,以及跟踪他们在集群中的状态。...提交给集群的声明YAML 文件中,会写清楚,对象的类型、元信息、以及预期在集群里预期的状态。这就构成了K8s 对象定义的三要素。...State) 期望状态 := 获取集群中对象X的期望状态(Desired State) if 实际状态 == 期望状态{ 什么都不做 } else { 执行编排动作,将实际状态调整为期望状态...Deployment 里边有很多配置允许我们制定 Pod 的滚动更新,比如允许在更新期间多创建出来多少个副本,以及最多容忍多少个副本不可用等等。...本文的示例已经上传我自己维护的K8s学习仓库,给公众号「网管叨bi叨」发私信k8s,即可获得地址,页面上搜入门就能找到这个入门系列的所有示例。如果找不到的话也别着急,发信息给我,等摸鱼的时候回你。

    51820

    Kubernetes入门

    如果参考文档 安装 Kubernetes 单Master节点,您可以在 master 节点的 root 用户使用 kubectl 操作您的集群 您也可以尝试 从客户端电脑远程管理 Kubernetes...如果多个容器紧密耦合并且需要共享磁盘等资源,则他们应该被部署在同一个Pod(容器组)中。 Node(节点) 下图显示一个 Node(节点)上含有4个 Pod(容器组) ?...在 Kubernetes 中,这是通过 Rolling Update 滚动更新完成的。...在Kubernetes 中,更新是版本化的,任何部署更新都可以恢复为以前的(稳定)版本。...滚动更新允许以下操作: 将应用程序从准上线环境升级到生产环境(通过更新容器镜像) 回滚到以前的版本 持续集成和持续交付应用程序,无需停机 练习:更新 nginx Deployment 修改 nginx-deployment.yaml

    1.1K20

    K8S学习笔记之Kubernetes 部署策略详解

    0x00 概述 在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。...蓝/绿发布与滚动更新不同,版本2(绿) 与版本1(蓝)一起部署,在测试新版本满足要求后,然后更新更新 Kubernetes 中扮演负载均衡器角色的 Service 对象,通过替换 label selector...# 我们经常可以在今日头条的客户端中就会发现有大量的 A/B 测试,同一个地区的用户看到的客户端有很大不同。...在生产环境,滚动更新或者蓝绿发布比较合适,但是新版本的提前测试是非常有必要的。如果你对新版本的应用不是很有信心的话,那应该使用金丝雀发布,将用户的影响降到最低。...最后,如果你的公司需要在特定的用户群体中进行新功能的测试,例如,移动端用户请求路由到版本 A,桌面端用户请求路由到版本 B,那么你就看使用A/B 测试,通过使用 Kubernetes 服务网关的配置,可以根据某些请求参数来确定用户应路由的服务

    1.8K40

    Kubernetes运维之容器编排Deployment更新机制

    滚动升级是默认的更新策略,它在删除一部分旧版本Pod资源的同时,补充创建一部分新版本的Pod对象进行应用升级,其优势是升级期间,容器中应用提供的服务不会中断,但要求应用程序能够应对新旧版本同时工作的情形...不过,更新操作期间,不同客户端得到的响应内容可能会来自不同版本的应用。...滚动更新时,应用升级期间还要确保可用的Pod对象数量不低于某阈值以确保可以持续处理客户端的服务请求,变动的方式和Pod对象的数量范围将通过spec.strategy.rollingUpdate.maxSurge...,其值可以是0或正整数,也可以是一个期望值的百分比;默认值为1,该值意味着如果期望值是3,则升级期间至少要有两个Pod对象处于正常提供服务的状态。...要查看修订历史的详细信息,运行: kubectl rollout history deployment.v1.apps/nginx-deployment --revision=2 假定现在你已决定撤消当前上线并回滚到以前的修订版本

    47420

    Argo Rollouts 实现蓝绿金丝雀发布

    用户希望在几个小时内将一小部分生产流量提供给他们应用程序的新版本。之后,他们希望缩小新版本规模,并查看一些指标以确定新版本与旧版本相比是否具有性能问题,然后他们将决定是否为切换到新版本。...用户想要使用 Deployment 中的正常滚动更新策略,如果用户使用没有步骤的金丝雀策略,rollout 将使用 maxSurge 和最大不可用值来滚动到新版本。...rollout 更新期间,控制器将通过 Rollout 更新策略中定义的步骤进行。...在更新过程中,无论何时,无论是通过失败的金丝雀分析自动中止,还是由用户手动中止,Rollout 都会退回到 stable 版本。 4....watch rollouts 这一次我们将中止更新,而不是将滚动切换到下一步,这样它就回到了 stable 版本,该插件同样提供了一个 abort 命令,可以在更新过程中的任何时候手动中止 Rollout

    2.7K30

    警告:有用的警告|让Kubernetes的使用越来越容易

    在开发特性、分类bug和回答支持问题的过程中,我们积累了有助于Kubernetes用户了解的信息。在过去,信息的共享仅限于发布说明、公告电子邮件、文档和博客文章等外部方法。...除非有人知道该信息并设法找到它,否则他们不会从中受益。 在Kubernetes v1.19中,我们添加了一个特性,允许Kubernetes API服务器向API客户机发送警告。...当用户应用自己没有创建的清单时,这尤其有用,这样他们就有时间联系作者,要求更新版本。...webhook返回一个警告消息,这里有一些提示: 不要在消息中包含“Warning:”前缀(这是客户端在输出中添加的) 使用警告消息来描述发出API请求的客户端应该纠正或注意的问题 精简;如果可能,将警告限制在...未来的可能性 现在,我们已经有了一种方法,可以在上下文中向用户传递有用的信息,我们在考虑使用这种方法来改善用户使用Kubernetes的体验。

    1.9K30

    Kubernetes 部署策略

    (Canary) - 让部分用户参与测试 A/B测试(A/B testing) - 最适合部分用户的功能测试 总结 Kubernetes 部署策略 在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务...蓝/绿发布与滚动更新不同,版本2(绿) 与版本1(蓝)一起部署,在测试新版本满足要求后,然后更新更新 Kubernetes 中扮演负载均衡器角色的 Service 对象,通过替换 label selector...中的版本标签来将流量发送到新版本,如下图所示: 下面是蓝绿发布策略下应用方法的示例图: 在 Kubernetes 中,我们可以用两种方法来实现蓝绿发布,通过单个 Service 对象或者 Ingress...我们经常可以在今日头条的客户端中就会发现有大量的 A/B 测试,同一个地区的用户看到的客户端有很大不同。...最后,如果你的公司需要在特定的用户群体中进行新功能的测试,例如,移动端用户请求路由到版本 A,桌面端用户请求路由到版本 B,那么你就看使用A/B 测试,通过使用 Kubernetes 服务网关的配置,可以根据某些请求参数来确定用户应路由的服务

    94520

    一、灰度发布

    如果没有问题,则可以将真正的用户流量慢慢导入到新版,在这中间,持续对新版本运行状态做观察,直到慢慢切换过去,这就是所谓的A/B测试。...当然,你也可以招募一些灰度用户,给他们设置独有的灰度标示(Cookie,Header),来让他们可以访问到新版应用,当然,如果中间切换出现问题,也应该将流量迅速地切换到老应用上。...这种实现原理主要根据用户请求中的 Cookie 是否存在灰度标示 Cookie去判断是否为灰度用户,再决定是否返回灰度版本服务 nginx.ingress.kubernetes.io/canary:可选值为...,通过根据灰度百分比决定是否转发到灰度服务环境中 nginx.ingress.kubernetes.io/canary-weight:值是字符串,为 0-100 的数字,代表灰度环境命中概率。...如果你的服务加载很多数据,或者有其他需求要求在特定情况下不被分配到流量,那么可以用这个探针。如果探针检测失败,流量就不会分配给该 Pod。在没有配置该探针的情况下,会一直将流量分配给 Pod。

    1.6K20

    一文看懂Kubernetes v1.16!

    当转换到GA时,我们的首要重点是API客户端的数据一致性。 当您升级到GA API时,您会注意到一些以前可选的护栏已经成为必需的或默认的行为。...有关如何使用自定义资源的详细信息,请参阅Kubernetes文档。...如果简单地对服务添加或删除一个endpoint可能带来可观的成本。随着endpoint资源的更新,代码中与该endpoint相关的部分都需要获取一份关于该资源的完整副本。...考虑到endpoint在部署期间频繁滚动更新等事件,这将是一笔巨大的资源浪费。 使用endpoint切片,服务的网络endpoint可以拆分为多个资源,从而显着减少大规模更新所需的数据量。...Kubernetes文档提供了有关endpoint切片的更多信息。作为Kubernetes 1.16中的alpha功能,默认情况下不会启用,但大家可以参阅说明文档了解如何在集群中启用他们。

    89941

    全面解析容器编排技术 Kubernetes

    密钥与配置管理:Kubernetes 允许你存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。你可以在不重建容器镜像的情况下部署和更新密钥和应⽤程序配置,也⽆需 在堆栈配置中暴露密钥。...随着项目的推进,还有各种各样的社区 SIG(特殊兴趣小组)针对 Kubernetes 中的不同领域。他们不断添加新功能,并使其对用户更加友好。...Deployment 典型的场景:滚动更新 Deployment 不仅可以滚动更新,还可以进行回滚,如何发现升级到 V2 版本后,发现服务不可用,可以回滚到 V1 版本。...Kubernetes 的服务暴露 Pod 能创建成功了,也能很好的对 Pod 做管理了,那么客户端如何找出相应的 Pod 调用其服务呢? Kubernetes 支持多种服务暴露的方式。...Kubernetes 在企业中的应用 无论是中小型企业,还是大型互联网为了提高资源利用率,实现降本增效,利用 Kubernetes 构建一套自动化运维环境已成为最佳选择。

    4K30
    领券