TECH
不敢把数据库运行在 K8s 上?容器化对数据库性能有影响吗?
容器化是一种将应用程序及其依赖项打包到一个独立、可移植的运行环境中的技术。容器化技术通过使用容器运行时引擎(比如 Docker/Containerd)来创建、部署和管理容器。Kubernetes(通常简称为 K8s)是一个开源的容器编排和管
来源: https://mp.weixin.qq.com/s/6AfB4WuCCkVpuZcdLCCFFw
修订记录
| 版本 | 时间 | 说明 |
|---|---|---|
| v1 | 2024-01-31 | 初稿 |
原文总结
- 容器化是一种将应用程序及其依赖项打包到一个独立、可移植的运行环境中的技术。容器化技术通过使用容器运行时引擎(比如 Docker/Containerd)来创建、部署和管理容器。Kubernetes(通常简称为 K8s)是一个开源的容器编排和管
我的感想
runc + cilium eBPF 是一种和 bare metal 性能几乎持平的容器化方案,如果考虑到更好的安全性和隔离性,kata-containers 也是一种很好的选择。 本文在综合业界研究成果的基础上,补足了容器 + 网络 CNI 部分的测试,对容器化在 CPU、Memory、Disk I/O、Network 几个方面的影响做了进一步的分析,借机阐明了容器化对性能的影响机制和解决方法,并且通过分析测试数据,我们发现 runc + cilium eBPF 是一种和 bare metal 性能几乎持平的容器化方案,如果考虑到更好的安全性和隔离性,kata-containers 也是一种很好的选择。
然后在容器化的基础上,对数据库的常见的性能瓶颈做了原理分析,并指出数据库这种 heavy workload 对 Host kernel 的复杂依赖,引导人们重新关注页表、Journal Lock、TCP Retran、CPU schedule wait 这些容易被忽视的因素,当然这里的很多问题和容器化无关,是一种普遍的存在。最后我们对几款流行的数据库做了定性分析,也根据我们团队多年的运维经验对一些常见问题做了总结,希望这些问题能被持续关注并从架构层面得到解决。 数据库容器化是最近经常被提起的话题,to be or not to be 也是萦绕在每个决策者心中的问题,在我们看来,数据库容器化面临的性能、稳定性、有状态依赖等关键问题都在被一一解决,每个问题都会有一个完美的答案,只要有需求在。
落地实践
- 结合当前场景补充可执行动作。
- 明确前置条件与风险边界。
评论