5

k8s 系真的是 qps 杀手

 2 years ago
source link: https://www.v2ex.com/t/805677
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  Kubernetes

k8s 系真的是 qps 杀手

  liuxu · 13 小时 55 分钟前 · 3123 次点击
测试了下 k3s,发现 qps 10 倍下跌。

压测机:ubuntu20.04 ,wrk2,6C16G 。
靶机:ubuntu20.04 ,2C4G 。
靶机和压测机均为同一内网,使用 vultr 多台机器搭建。

准备:
ubuntu20.04 下编译最新的 stable 版本 nginx-1.20.1,编译后的文件制作成 docker 镜像上传到 docker hub,然后又制作了一个 helm 包,用于直接安装到 k3s 测试。
其中 index.html 均为字符串"helloworld",nginx 配置 worker_connections 为 102400,worker_processes 为 auto 。
所有系统 nofile 为 102400 。

压测目标:
所有请求保证在 1s 以内,1k 或 10k 加减,如测试 1k 、2k,2k 超过 1s 则丢弃 2k 的数据,只留下 1k 的。10k 、20k,20k 超过 1 秒则丢弃 20k 的数据。


压测步骤:
1. 裸机启动 docker run,压测,然后卸载 docker,安装 k3s,默认 runtime 为 containerd 。
结果:裸 docker run 并发 10k,rps 30k 。k3s 直接降到并发 1k,rps 1k 。

2.分别安装 k3s(runtime 为 containerd)和 k3s(runtime 为 docker)压测。
结果:同为并发 1k,rps 1k,docker 延迟明显高于 containerd 。

3. k3s 使用 containerd,并分别安装 2 、3 、4 个 node 压测,其中 master 会被 taint 掉 agent,也就是真正运行 nginx 的为 1 、2 、3 个 node,其中每个 node 分配 1 个 nginx pod (当然 master 没有 pod )。
结果:随着 node 数增加,rps 也可以慢慢增加。但总的来说,即使此时有 4 个 2C4G 的 node,也只能并发 1k,rps 7k,远不如裸机跑 docker run 。


结论:使用 k8s 系可以拥有自动扩展,高可用等能力,而且可以直接对接多种 CI 平台。但是对于小成本又想要高 qps 的项目,不要使用 k8s 系,建议使用传统环境部署。当然很多人的项目永远都不会有 1k qps,所以这种业务情况上 k8s 系还是很香的。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK