这个问题我通常会问一些面试k8s运维岗位的同学,因为这个报错是在安装启动kubelet中常见的错误。相比与知识点,我个人觉得的思考能力更重要,多问几个为什么,为啥k8s默认禁用了swap呢?
我们都知道swap的作用主要是将部分内存中匿名页置换到磁盘中,等到内存缺页异常的时候再交换回来,通过磁盘扩展内存空间。看似是个好东西,但k8s却默认禁用了。
主要有两个方面原因:
第一是因为性能问题,在生产环境我们经常会遇到容器性能突然降低的情况,查看原因后,大部分都是因为开启了swap导致的。swap看似解决了有限内存的问题,但这种通过时间换空间的做法也给性能带来了很大问题,尤其是在高并发场景中,很容易导致系统不稳定。
第二是因为k8s定义的资源模型中,CPU和内存都是确定的可用资源,在调度的时候都会考虑在内。比如,设置了内存设置了limit 2G,就代表最大可用内存是2G,而引入swap(cgroup支持swap限制)后这个模型就变得复杂了,而且需要结合Qos,swap的使用完全是由操作系统根据水位自行调节的,并不直接受kubelet管理。
页面更新:2024-02-23
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号