部署Kubernetes(k8s)时,为什么要关闭swap、selinux、firewall 防火墙?
关于防火墙的原因(nftables后端兼容性问题,产生重复的防火墙规则)
The ip tables tooling can act as a compatibility layer, behaving like iptables but actually configuring nftables. This nftables backend is not compatible with the current kubeadm packages: it causes duplicated firewall rules and breaks |
大概意思就是 nftables 与 kubeadm 不兼容:它会导致重复的防火墙规则和breakskube-proxy
关于selinux的原因(关闭selinux以允许容器访问宿主机的文件系统)
selinux 是什么?是 Linux® 上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。
那为什么要关闭这个很好的功能呢?
Setting SELinux in permissive mode by running |
因为有些时候容器需要访问宿主机器去实现一些功能,比如pod 的网络需要方位宿主文件进行实现,所以没办法咯。
关闭swap 的原因
首先我们确认下 swap是干嘛的?
在Linux下,SWAP的作用类似Windows系统下的“虚拟内存”。当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况。
SWAP意思是交换,顾名思义,当某进程向OS请求内存发现不足时,OS会把内存中暂时不用的数据交换出去,放在SWAP分区中,这个过程称为SWAP OUT。当某进程又需要这些数据且OS发现还有空闲物理内存时,又会把SWAP分区中的数据交换回物理内存中,这个过程称为SWAP IN。
当然,swap大小是有上限的,一旦swap使用完,操作系统会触发OOM-Killer机制,把消耗内存最多的进程kill掉以释放内存。
当然这种交换肯定是以牺牲性能作为代价来保证程序的运行,如果你的磁盘是机械硬盘,那么恭喜你,速度更慢了。。
那么我们来看下k8s中,swap对它的影响呢?
Swap会导致docker的运行不正常,性能下降,是个bug,但是后来关闭swap就解决了,就变成了通用方案。
对于我们部署在k8s中的应用或者运行在k8s上的工作服务,看到一个别人很好的举例:
在计算集群(请注意计算集群这四个字的含义,这种集群主要运行一些生存周期短暂的计算应用,申请大量内存-动用大量CPU-完成计算-输出结果-退出,而不是运行诸如mysql之类的服务型程序)中,我们通常希望OOM的时候直接杀掉进程,向运维或者作业提交者报错提示,并且执行故障转移,把进程在其他节点上重启起来。而不是用swap续命,导致节点hang住,集群性能大幅下降,并且运维还得不到报错提示。更可怕的是有一些集群的swap位于机械硬盘阵列上,大量动用swap基本可以等同于死机,你甚至连root都登录不上,不用提杀掉问题进程了。往往结局就是硬重启。 节点hang住是非常恶劣的情况,往往发现问题的时候,已经造成了大量损失。而程序出错可以自动重试,重试还OOM说明出现了预料之外的情况(比如程序bug或是预料之外的输入、输入文件大小远超预期等问题),这种时候就应该放弃这个作业等待人员处理,而不是不停地尝试着执行它们,从而导致后面的其他作业全部完蛋。 所以计算集群通常都是关闭swap的,除非你十分明确swap可以给你的应用带来收益。 计算集群和诸如执行mysql的集群有一个根本不同就是计算集群不在意单个进程、单个作业的失败(由于面向的用户很宽泛,这些作业所执行的程序很可能未经严格的测试,它们客观上出问题的几率远高于mysql等成熟的程序),但是绝对不接受hang住引起整个集群无法处理任何作业,这是非常严重的事故。 |
上诉描述中 主要还是结合了实际的使用场景,一般k8s服务部署的大部分都属于允许OOM时候直接将服务杀掉的应用。对于像mysql的服务,在实际生产中从性能稳定性多方面考虑上应该都选用物理机部署。
对于swap的历史可以看下面链接
Kubelet/Kubernetes should work with Swap Enabled · Issue #53533 · kubernetes/kubernetes · GitHub
部署Kubernetes(k8s)时,为什么要关闭swap、selinux、firewall 防火墙?相关推荐
- 【收藏】部署Kubernetes(k8s)时,为什么要关闭swap、selinux、防火墙?
不止部署k8s,许多公司在装机过程就就直接关闭了swap.selinux和防火墙 selinux,这个是用来加强安全性的一个组件,但非常容易出错且难以定位,一般上来装完系统就先给禁用了 iptable ...
- 基于kubeadm快速部署kubernetes K8S V1.17.4集群-无坑完整版
基于kubeadm快速部署kubernetes K8S V1.17.4集群,并部署Dashboard Web页面,实现可视化查看Kubernetes资源 主机配置规划 服务器名称(hostname) ...
- 【CentOS】利用Kubeadm部署Kubernetes (K8s)
[CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...
- Centos7 安装部署Kubernetes(k8s)集群过程
1.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.9 Docker version 20.10.12 x86_64 2.前言 如下图描述了软件部 ...
- 内网环境下手动部署kubernetes(v1.26.3)高可用集群
这篇博客主要是记录了手动部署一个高可用的Kubernetes集群的过程.旨在帮助自己及初学者学习kubernetes,并记录下具体的操作过程和总结的知识点.文中可能存在一些问题或不足之处,仅供参考. ...
- 【kubernetes / k8s 踩坑记录】一定要关闭SWAP
重要提示 重启集群后出现 connection to the server was refused 报错,我的情况是由于swap引起的. swapoff -a 再次启动即可 生产环境建议关闭swap ...
- Kubernetes(k8s)快速入门和环境部署
目录 1. Kubernetes介绍 1.1 应用部署方式演变 1.2 kubernetes简介 1.3 kubernetes组件 1.4 kubernetes概念 2. kubernetes集群环境 ...
- 【博客558】k8s node为什么需要关闭selinux与swap
k8s node为什么需要关闭selinux与swap 1.关闭selinux centos关闭方法: setenforce 0 && sed -i 's/^SELINUX=.*/SE ...
- kubeasz一键部署containerd运行时、高可用k8s(1.26.x)集群-Day 02
1. 生产环境部署架构 (1)多master节点,实现master节点的高可用和高性能. (2)单独的etcd分布式集群(生产使用SSD盘),高可用持久化k8s资源对象数据,并实现高可用. (3)多n ...
最新文章
- Safair 浏览器cllick事件不生效或者需要双击才生效
- Kali Linux 2020.1快速修改root用户密码
- QT的QDBusReply类的使用
- C++:new 和 delete
- LeetCode MySQL 615. 平均工资:部门与公司比较(over窗口函数)
- Genomic characterization of metastatic breast cancers 转移性乳腺癌的基因组特征
- 电动车结构及其工作原理
- 阿里云服务器ftp连接后21端口无法使用的问题
- Praat脚本-017 |拆分已经标注好的音素为两个音素
- The Road Not Taken(未选择的路)
- mysql删除不彻底,mysql删除不彻底的解决方法
- ubuntu server 14.04 编译安装xen4.4.2配置vtpm(一)——xen4.4.2源码编译安装
- 总结哪些因素影响谷歌排名
- 一个月薪5k+的广州安全服务实习生的真实生活
- 《一本书读懂24种互联网思维》用户思维1
- 循环渐进NsDoor(一)
- 【论文阅读】Geography-Aware Sequential Location Recommendation
- 【33】Android WebView加载html5 3D全景
- mysql.server 脚本解析
- iebook超级精灵服务业务蜕变始末
热门文章
- linux文件管理器打不开
- U盘64G为啥是60G?
- Kali Win-KeX SL
- 2021-07-28 关于软件测试从业人员的几个误解
- bzoj-3522 Hotel
- 阿里云服务器华北1、华北2、华北3、华北5地域在哪个城市为什么没有华北4?...
- 半导体器件物理【20】PN结 —— 费米能级与电流关系、接触电势差
- 2019海南大学计算机研究生分数线,2021海南大学研究生分数线一览表(含2019-2020历年复试)...
- HSE\HEI\PLL\LSE\LSI
- C语言——应用与游戏