🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] kubernetes 对外称,无损上下线服务。其实需要配置相关探针才能上线到该功能。**强烈建议**配置上该功能。 在分析流量有损的原因有很多,比如: - 上线时,应用在就绪(readinessProbe)前收到流量,导致请求无法被处理 - 下线时,应用没有做优雅退出导致请求中断,应用没有正确监听到终止信号导致优雅退出无效,平台路由规则更新不及时导致流量转发到已经销毁的副本等 # 滚动更新机制 在应用发布时,Kubernetes 会将已就绪的 Pod 添加到与 Service 同名的 Endpoint 对象中,并在 Endpoint 中移除处于 Terminating 状态的 Pod。kube-controller-manger 和 kube-proxy 组件都会监听 Service 和 Endpoint 对象的变化。在他们发生变化时,kube-proxy 组件会通过 ipvs 或 iptables 更新节点的流量转发规则,kube-controller-manager 组件则会更新下游的后端。 Kubernetes 常用的三种工作负载:Deployment(无状态应用)、StatefulSet(有状态应用)、DaemonSet(守护进程) 对象都支持滚动更新。在滚动更新的过程中,通过 maxSurge 字段来控制允许超出期望副本数的副本个数,maxUnavailable 字段来控制更新过程中不可用的副本个数。 以 Deployment 为例,它的 maxSurge 和 maxUnavailable 默认值分别是25%。在滚动更新时,Kubernetes 会创建一个新的 ReplicaSet 对象来启动新的副本,而旧的 ReplicaSet 对象会逐步减少副本数量。 假设有某应用有 5 个副本,这就意味着在滚动更新时,它最多存在 7 个副本(新增了 2 个副本,5 * 25% = 1.25,向上取整即为2)。最多只有 1 个副本(5 * 25% = 1.25,向下取整即为1)处于不可用的状态。 # 服务上线有损分析 pod上线流程图 ![](https://img.kancloud.cn/96/b9/96b935303a3613bc0bafdea87bdae81d_1763x839.png) # 服务下线有损分析 pod下线流程图 ![](https://img.kancloud.cn/fd/65/fd65f45fc6b493578e14bd26f5ddda21_1439x726.png) # dockerfile启动服务