首页 > 其他分享 >k8s中pod滚动更新如何减少流量丢失

k8s中pod滚动更新如何减少流量丢失

时间:2024-07-09 17:10:48浏览次数:11  
标签:滚动 nginx 流量 Pod preStop SIGTERM k8s pod

有一个大前提,在旧pod状态更新为Terminating并且SIGTERM后,容器仍然会将已经接收到的流量正常完成后才会销毁。

1.流量上线时的有损情况,添加健康检测,防止新pod还没准备好就分配流量

2.流量下线时的有损情况,添加preStop生命周期挂钩, 在容器终止之前调用此钩子防止在新pod还没分配流量前,将流量分给已经SIGTERM的容器。

一旦新的Pod处于活动状态并准备就绪,Kubernetes将使旧的Pod停止服务,从而将Pod的状态更新为Terminating ,将其从端点对象中删除,然后发送SIGTERM 。 SIGTERM使容器以(希望)正常的方式关闭,并且不接受任何新连接。 在将Pod从端点对象中逐出后,负载均衡器会将流量路由到其余(新的)流量。 这就是造成我们部署中的可用性差距的原因。 在负载均衡器注意到更改并可以更新其配置之前或之时,通过终止信号停用Pod。 这种重新配置是异步发生的,可能先发送SIGTERM信号后才摘除旧pod的Endpoints,此时可能导致很少的不幸请求被路由到终止Pod。此时应该配置preStop生命周期挂钩


apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default
spec:
  containers:
  - name: nginx
    image: nginx
  #优雅退出
  lifecycle:
    preStop:
      exec:
        command: ["/bin/bash", "-c", "sleep 30"]
terminationGracePeriodSeconds: 60

 

标签:滚动,nginx,流量,Pod,preStop,SIGTERM,k8s,pod
From: https://www.cnblogs.com/xiaoxiaomuyuyu/p/18292320

相关文章

  • K8s 驱逐场景以及规避方案
    Pod驱逐场景总结从一个SRE角度看,Pod驱逐分为两种情况:较安全驱逐&提高稳定性的良性驱逐API发起驱逐,典型案例:kubectldrainNodeNotReady时,ControllerManager发起的驱逐有风险的驱逐节点压力驱逐节点磁盘空间不足、内存不足或Pid不足,kubelet发起驱逐......
  • K8s 无备份,不运维
    出故障时,就知道是谁在裸泳......
  • K8s 开启审计日志
    一、背景应安全规范,对apiserver核心组件,需要记录,"谁在什么时候操作了什么"方便故障排查二、操作步骤apiserver开启审计日志在所有master节点执行备份配置文件mkdir-p/home/clay/bak$(date+%F)cp/etc/kubernetes/manifests/kube-apiserver.yaml/home/clay/......
  • 【云原生之kubernetes实战】在k8s环境下部署OrangeHRM人力资源管理系统
    【云原生之kubernetes实战】在k8s环境下部署OrangeHRM人力资源管理系统一、OrangeHRM介绍1.1OrangeHRM简介1.2OrangeHRM特点1.3OrangeHRM使用场景二、相关知识介绍2.1本次实践存储介绍2.2k8s存储介绍三、本次实践介绍3.1本次实践简介3.2本次......
  • 实践1-使用 ansible 快速安装 k8s 机器
    推荐:kubeadm安装用:kubesprayopeninnewwindow二进制安装用:kubeaszopeninnewwindow此安装方式参考上面两个项目创建,如果刚开始搭建,直接使用上面的安装方式即可,可根据实际情况微调项目地址:https://github.com/clay-wangzhi/ansible-collection-k8s 相关支持支......
  • K8s 一条默认参数引起的性能问题-Pod enableServiceLinks
    问题时间线xx:xx]开发收到业务反馈接口响应超时[xx:xx]开发&SRE&中间件联合排查代码、网关、底层网络问题,无果[xx:xx] 测试环境复现排查[xx:xx] 利用差异法、排除法和经验解决,先上线[xx:xx] 根因定位 问题现象1)接口偶发性超时image-202401161814518792)容器化......
  • k8s 关闭 enableServiceLink-Pod-CPU-内存占用过高
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<特性说明:enableServiceLinks特性,是k8s提供给pod发现和访问svc的两种方案之一(另一种是DNS)。该特性在pod启动时,kubelet会将activesvc通过env {SVCNAME}_SERVICE_HOST、......
  • K8s 中 Pod OOMKilled 原因
    在我们日常的工作当中,通常应用都会采用Kubernetes进行容器化部署,但是总是会出现一些问题,例如,JVM堆小于Docker容器中设置的内存大小和Kubernetes的内存大小,但是还是会被OOMKilled。在此我们介绍一下K8s的OOMKilled的ExitCode编码。 ExitCode137表明容器收到......
  • K8S学习教程(三):在PetaExpress KubeSphere 容器部署 Wiki 系统 wiki.js 并启用中文全
      背景wiki.js是非常优秀的开源Wiki系统,尽管在与xwiki功能相比,还不算完善,但也在不断进步。常用的功能还是比较实用的,如:Wiki写作、分享、权限管理功能还是非常实用的,UI设计非常的漂亮,精美的界面和直观的操作体验,能够满足小团队的基本知识管理需求。认真阅读......
  • k8s集群离线部署
    K8s离线部署环境目标k8s离线部署步骤部署docker详情见文章:《离线安装docker及后端项目离线打包》https://blog.csdn.net/qq_45371023/article/details/140279746?spm=1001.2014.3001.5501所用到的所有文件在:链接:https://pan.baidu.com/s/10cb-dXkgdShdjPEBCyvTrw?......