Kubernetes (k8s) 通过一系列机制保障在滚动升级时,下线的 Pod 不再被访问。以下是一些主要的保障措施:

  1. Service 抽象:在 Kubernetes 中,Pod 通常不是直接暴露给外部访问的,而是通过 Service 来抽象和暴露。Service 提供一个稳定的网络端点,无论背后的 Pod 如何变化,Service 的 IP 和端口都是不变的。
  2. Endpoint 控制:当 Pod 发生变化时(比如滚动升级),Kubernetes 会自动更新与 Service 关联的 Endpoint 对象。Endpoint 对象包含了所有属于该 Service 的 Pod 的 IP 地址和端口。Kubernetes 会确保在下线的 Pod 从 Endpoint 列表中移除之前,不会有新的流量被路由到这些 Pod。
  3. Readiness Probes:Pod 可以通过配置 Readiness Probes 来告诉 Kubernetes 它是否已经准备好接受流量。在滚动升级过程中,如果一个 Pod 的 Readiness Probe 失败,Kubernetes 会将其从 Service 的 Endpoint 列表中移除,直到 Probe 成功为止。
  4. 流量调度:Kubernetes 的 Service 使用 iptables 或 IPVS 等技术来实现流量转发。在滚动升级过程中,Service 会动态更新这些转发规则,确保流量只被路由到处于 Ready 状态的 Pod。
  5. 滚动更新策略:在部署时,可以通过配置滚动更新策略来控制 Pod 的升级顺序和速度。例如,可以设置最大不可用 Pod 的数量或最大涌浪(surge)数量,以确保在升级过程中有足够的 Pod 来处理流量。
  6. Ingress 控制器:对于外部访问的流量,通常通过 Ingress 控制器来管理。Ingress 控制器会根据配置的规则将外部流量路由到相应的 Service。在滚动升级时,Ingress 控制器也会配合 Kubernetes 的机制,确保流量只被路由到可用的 Pod。

综上所述,Kubernetes 通过 Service、Endpoint、Readiness Probes、流量调度、滚动更新策略和 Ingress 控制器等多种机制来保障在滚动升级时下线的 Pod 不再被访问。

k8s是如何保障滚动升级时下线的pod不被访问的更多相关文章

  1. 阿里云k8s服务springboot项目应用升级时出现502错误

    背景 随着小步快跑.快速迭代的开发模式被越来越多的互联网企业认同和采用,应用的变更.升级频率变得越来越频繁.为了应对不同的升级需求,保证升级过程平稳顺利地进行,诞生了一系列的部署发布模式. 停机发布 ...

  2. k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡

    k8s 中的 service 如何找到绑定的 Pod 以及如何实现 Pod 负载均衡 前言 endpoint kube-proxy userspace 模式 iptables ipvs kernels ...

  3. k8s 存活探针,滚动更新

    文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...

  4. 【云计算】K8S DaemonSet 每个node上都运行一个pod

    Kubernetes容器集群中的日志系统集成实践 Kubernetes是原生的容器编排管理系统,对于负载均衡.服务发现.高可用.滚动升级.自动伸缩等容器云平台的功能要求有原生支持.今天我分享一下我们在 ...

  5. 十六, k8s集群资源需求和限制, 以及pod驱逐策略。

    目录 容器的资源需求和资源限制 QoS Classes分类 Guaranteed Burstable Best-Effort kubernetes之node资源紧缺时pod驱逐机制 Qos Class ...

  6. Kubernetes K8S在IPVS代理模式下Service服务的ClusterIP类型访问失败处理

    Kubernetes K8S使用IPVS代理模式,当Service的类型为ClusterIP时,如何处理访问service却不能访问后端pod的情况. 背景现象 Kubernetes K8S使用IPV ...

  7. k8s集群Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式?

    k8s的Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式? 简单聊聊你对工作负载Job的理解? Job 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算 ...

  8. k8s中ingress,service,depoyment,pod如何关联

    k8s中pod通过label标签名称来识别关联,它们的label  name一定是一样的.ingress,service,depoyment通过selector 中app:name来关联 1.查询发布 ...

  9. [k8s]kube-router替代kube-proxy实现svc网络和pod网络

    本文讲解了kube-router部署,无需在部署kube-proxy了. kube-router采用lvs实现svc网络,采用bgp实现pod网络. kube-router也是基于cni网络,本文是容 ...

  10. k8s,coredns内部测试node节点上的pod的calico是否正常的一个小技巧

    最近由于master整个挂掉,导致相关一些基础服务瘫掉,修复中测试有些节点网络又出现不通的情况正常的启动相关一些服务后,测试一些节点,比较费劲,还有进入pod,以及还有可能涉及命名空间操作这里可以这样 ...

随机推荐

  1. 任何Bean通过实现ProxyableBeanAccessor接口即可获得动态灵活的获取代理对象或原生对象的能力

    如果一个BEAN类上加了@Transactional,则默认的该类及其子类的公开方法均会开启事务,但有时某些业务场景下某些公开的方法可能并不需要事务,那这种情况该如何做呢? 常规的做法: 针对不同的场 ...

  2. Linux反空闲的设置和关闭

    有一定工作经验的运维人基本都会遇到这样的场景,某个窗口自动断开了,提示超时: [oracle@jystdrac1 ~]$ timed out waiting for input: auto-logou ...

  3. Kafka-生产者、broker、消费者的调优参数总结

    生产环境下,为了尽可能提升Kafka的整体吞吐量,可以对Kafka的相关配置参数进行调整,以达到提升整体性能的目的. 本文主要从Kafka的不同组件出发,讲解各组件涉及的配置参数和参数含义. 一.生产 ...

  4. 听说有 Hugging Face 陪伴的春节,是这样的…

    辞旧迎新春节到,家家户户好热闹.Hugging Face 中国团队成员祝各位社区成员们新春快乐,万事如意! 过去的一年我们持续看到 AI 技术的腾飞和发展,以及诸多机构为开源 AI 作出巨大的贡献.非 ...

  5. 反编译工具Jadx for MAC 安装与配置

    Jadx安装与配置 安装jadx brew install jadx 配置环境变量 先找到java安装位置 (base) # chen at Little-M1-Wrok in /usr/bin [1 ...

  6. NC14704 美味菜肴

    题目链接 题目 题目描述 小明是个大厨,早上起来他开始一天的工作.他所在的餐厅每天早上都会买好 \(n\) 件食材(每种食材的数量可以视为无限),小明从到达餐厅开始就连续工作 \(T\) 时间.每道菜 ...

  7. XML和JSON的比较

    XML和JSON的比较 XML与JSON都可以用来描述或者存储数据,两者都有各自的优点,使用场景取决于需求. 描述 XML 可扩展标记语言Extensible Markup Language,是一种用 ...

  8. oracle goto语句介绍

    以下内容来自oracle plsql user guide. ------------------------------------------------------- 一 定义: The Ora ...

  9. 使用marquee标签实现文字滚动

    代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  10. C++ 多线程的错误和如何避免(13)

    在 async 任务中抛出的异常会被 std::future::get() 触发 #include <future> #include <iostream> int main( ...