应用服务网格作为集群网络管理的重要工具,为网格内的服务提供流量治理与流量监控的能力。sidecar作为应用服务网格数据面的重要组件,需要依赖服务业务pod的更新来实现sidecar的升级和重新注入。
本章节主要介绍如何实现数据面sidecar升级过程中,不中断服务的业务流量。
为保证您的服务在sidecar升级的过程中不中断业务流量,首先确保您的服务实例数大于等于2,升级策略为滚动升级(rollingUpdate)。
相关滚动升级策略如下,供参考:
kubectl get deploy nginx -n namespace_name -oyaml | grep strategy -a10
配置项说明:
添加readiness探针,可以保证您的新实例pod在真正准备就绪时,才开始接管业务流量。这就避免了在新的实例pod未启动时,接管业务流量造成的访问不通问题。
相关配置如下:
kubectl get deploy nginx -n namespace_name -oyaml | grep readinessProbe -a10
配置项说明:
readiness探针配置项:deployment.spec.template.spec.containers[i].readinessProbe
其中,包括探针检查初始时间,检查间隔,超时时间等配置。
服务就绪时间,minReadySeconds:用于标识pod的ready时间至少保持多长时间,才会认为服务是运行中。
相关配置如下:
kubectl get deploy nginx -n namespace_name -oyaml | grep minReadySeconds -a1
配置项说明:
服务就绪时间:deployment.spec.minReadySeconds,可根据您业务的实际情况确定。
terminationGracePeriodSeconds,优雅关闭时间。在滚动升级过程中,首先会移除旧的服务实例pod的endpoint,并将实例pod的状态置为Terminating,这时K8S会发送SIGTERM信号给pod实例,并等待优雅关闭时间后,将pod强制杀掉。您可以利用这段时间,处理未完成的请求:
kubectl get deploy nginx -n namespace_name -oyaml | grep terminationGracePeriodSeconds -a1
配置项说明:
优雅关闭时间:deployment.spec.template.spec.terminationGracePeriodSeconds,默认值为30s,可根据业务诉求适当调整。
preStop会在实例pod中止前调用,可以用来实现业务pod的优雅关闭。此处需要根据业务诉求来进行相应的配置,此处以nginx为例
kubectl get deploy nginx -n namespace_name -oyaml | grep lifec -a10
nginx支持配置-s命令,优雅关闭进程。
类似的,您可以选择运行自定义命令或自定义脚本,来优雅关闭您的服务进程。
操作场景 由于ELB流量转到后端 服务器 以后,源IP会被转换为100.125.0.0/16的IP...
在使用Apache Kafka生产和消费消息的时候,肯定是希望能够将数据均匀地分配到所...
安全变革 - 拓展的检测和响应市场广阔 《世界互联网发展报告 2020》显示 :2020 ...
本文转载自微信公众号「码农读书」,作者码农读书。转载本文请联系码农读书公众...
随着IDC数据中心新技术的不断发展,新一代IDC数据中心也有了很大的发展变化,下...
在科技迅速发展的今天,网络也越来越成熟,因此很多企业走上了电子商务之路。网...
众所周知,在中国本地化收款和银企对账的流程中,银行电子回单记载了企业网上收...
从计算机诞生至今,我们经历了单机、PCLAN、互联网、移动互联网等几个不同的IT时...
今天,奇瑞商用车宣布与阿里云达成战略合作,双方将在汽车研发、营销、制造等方...
作为业界少有的EB级别数据分布式平台 MaxCompute系统每天支撑上千万个分布式作业...