滚动更新控制副本数
适用停机发布Recreate:设置spec.strategy.type=Recreate,表示Deployment在更新Pod时,会先杀掉所有正在运行的Pod,然后创建新的Pod。 适用零停机发布RollingUpdate:设置spec.strategy.type=RollingUpdate,表示Deployment会以滚动更新的方式来逐个更新Pod。 服务在滚动更新时,deployment控制器的目的是:给旧版本(old_rs)副本数减少至0、给新版本(new_rs)副本数量增至期望值(replicas),以下是kubernetes提供的两个参数: maxUnavailable:和期望ready的副本数比,不可用副本数最大比例(或最大值),这个值越小,越能保证服务稳定,更新越平滑; maxSurge:和期望ready的副本数比,超过期望副本数最大比例(或最大值),这个值调的越大,副本更新速度越快。 取值范围 数值(两者不能同时为0。) maxUnavailable: [0, 副本数] maxSurge: [0, 副本数] 比例(两者不能同时...
Kubernetes CPU 限制深度解析:为何移除反而提速 22 倍
概述Kubernetes CPU 限制看似能保护集群稳定性,实则可能因 Linux 内核 Bug 导致不必要的 CPU 流控,严重影响服务性能。Buffer 团队通过移除 CPU 限制,实现了服务响应速度最高 22 倍的提升。 核心发现: ⚠️ CPU 限制触发不必要流控 🐛 Linux 内核 < 4.19 存在 Bug 🚀 移除限制后性能大幅提升 ⚖️ 需要权衡稳定性和性能 适用场景: 服务响应延迟高 CPU 未满但仍被流控 追求极致性能 内核版本 < 4.19 原文链接: https://blog.fleeto.us/post/k8s-faster-services-no-cpu-limits/推荐配合阅读: 站内《最大最小内存设置为一致》文章 背景Buffer 的 Kubernetes 实践基本情况: 项目 数据 开始时间 2016 年 管理工具 kops 节点数量 ~60 个(AWS) 容器数量 ~1500 个 服务架构 微服务 参考: Kubernetes 官方案例研究 CPU 限制机制工作原理CPU 限制(C...
结合prometheus调整Kubernetes资源限制
转自: https://www.51cto.com/article/704723.html Kubernetes 资源限制往往是一个难以调整的配置,因为你必须在太严格或者太宽松的限制之间找到最佳的平衡点。 通过本文,你可以学习到如何设置正确的 Kubernetes 资源限制:从检测到无限制的容器,到找出你应该在集群中正确配置的 Kubernetes 资源限制。我们假设你使用 Prometheus 来监控你的 Kubernetes 集群。这就是为什么本文中的每个步骤都使用 PromQL 查询进行示例说明的原因。 检测没有 Kubernetes 资源限制的容器 设置正确的 Kubernetes 资源限制的第一步是检测没有任何限制的容器。没有 Kubernetes 资源限制的容器可能会在你的节点中造成非常严重的后果。在最好的情况下,节点将开始按顺序或评分驱逐 pod。由于 CPU 节流,它们也会出现性能问题。在最坏的情况下,节点将由于内存不足而被终止。 查找没有 Kubernetes 资源限制的容器 根据命名空间查找没有限制 CPU 的容器 1sum by (namespace...
记录一次k8s网络DNS问题排查过程
问题1: k8s环境下,服务使用node:xxx-alpine镜像,服务间访问报错: getaddrinfo EAI_AGAIN问题2: 非alpine镜像, 使用clusterip访问频繁出现超时问题: connect ECONNRESET,read ECONNRESET还有服务本身axios报的timeout问题3: 非alpine镜像, 使用dns访问报错: getaddrinfo ENOTFOUND 详细背景见: https://github.com/k3s-io/k3s/issues/5897 问题4: coreDns报错出现error: [ERROR] plugin/errors: 2 . NS: read udp 10.42.2.5:38764->183.60.82.98:53: i/o timeout[DONE]记录问题解决过程问题1问题排查/解决过程 现象1: 问题发生在流量高峰阶段 现象2: 压测tps,200线程仅30多每秒, 吞吐量极差 现象3: 是偶尔性的, 200线程50次仅发现十几条这样的报错日志 原因描述(...
