蓝盟IT外包,Kubernetes用Linux指南

发布者:上海IT外包来源:http://www.lanmon.net点击数:1109

蓝盟IT小贴士,来喽!
Kubernetes确实可以实现容器操作的可扩展性和管理,但并不直接有助于Kubernetes本身管理依赖的基础设施。 Kubernetes本身是需要在某个地方运行的应用程序(或一组应用程序)。 您可能知道,Kubernetes不是操作系统,但取决于要在节点上安装的Linux或Windows系统。 Kubernetes可以在虚拟化平台(如AWS和GCE  )上运行,但所有这些都需要首先安装操作系统。 (作为一些示例,AWS  EKS不需要管理控制平面节点,但必须在工作节点上配置Linux服务。 )中被调用,将出现故障
在操作上,重点是Kubernetes及其执行的工作负载,这是Kubernetes部署中常见的问题。 Kubernetes定期进行修补程序和升级,但经常忘记或忽略底层操作系统的维护、更新、安全性和操作。 至少在安全审计之前是这样的。 我经常听SRE和系统管理员的话,但同时管理Linux和Kubernetes会成为额外的工作。 与典型的Linux操作系统一样,Kubernetes也需要修补、更新、保护和控制用户访问。 但是,这些任务只是在Kubernetes级别完成的,并不意味着在操作系统级别可以忽略这些任务。 但是,通过选择适当的基础操作系统版本,可以大幅减少操作系统的维护工作量,减轻无法及时更新的影响。
因此,在运行Kubernetes之前,可能需要安装Linux。 这包括底层的操作系统. 我需要选择运行哪个Linux发行版? 有很多选择,但通常分为针对容器优化的操作系统和通用的操作系统两种。
通用Linux
这些是通常类型的Linux。
大多数人熟悉通用类型的Linux操作系统,如Ubuntu、Debian、CentOS、RHEL和Fedora。 这是在Kubernetes群集上运行通用操作系统的主要优点之一,系统管理员熟悉如何安装、更新和增强Linux分发。 您可以使用现有的工具集启动服务,安装操作系统,并将其配置为基本安全级别。 即使Kubernetes正在运行,现有的修补程序管理和安全测试工具也必须在这些系统上正常运行。但是……
如果使用通用类型的Linux系统,则会产生一般的Linux管理开销。 这意味着用户帐户管理、修补程序管理、内核更新、服务防火墙、SSH安全、root登录禁止、禁用未使用守护程序、内核优化等都必须完成并保持最新如上所述,这些任务大部分可以使用现有工具,例如Ansible、Chef、Puppet执行,但更新清单或控制文件以使服务器配置文件适合Kubernetes主节点和工作节点
另一个问题是操作系统更改和Kubernetes维护调整。 安装后,在操作系统保持原样之前,不整合很多。 随着时间的推移,Kubernetes会升级,但底层操作系统可能会在各种软件包和安装的内核中逐渐积累已知的CVE  (常见漏洞和暴露)负担。
理想情况下,Ansible和Puppet等自动化平台与Kubernetes合作,可以在不影响Kubernetes操作的情况下升级节点的操作系统。 这意味着对操作系统的需要。
将节点设置为不可调度,以防止新工作负载调度到该节点。
驱逐此节点,将所有正在运行的Pod移动到另一个节点。
更新,修补节点
将节点设置为可调度
当然,此系统必须同时防止许多节点更新,以免群集的工作负载能力受到不利影响。您可能希望调整OS更新和Kubernetes更新以减少重新启动和中断。
通用类型的Linux操作系统最大的好处是员工熟悉的水平。 这意味着他们精通部署,也具备阻隔技术。 他们可以安装和使用常见的操作系统工具,如tcpdump、strace和lsof。 您可以轻松更改配置,纠正错误,测试备选方案(这是好事,也是坏事! 的缺点是必须保持系统管理开销,并与Kubernetes基础架构和操作一起更新。
集装箱专用操作系统
美国国家标准技术研究所(NIST  )对定义容器专用的操作系统进行了总结,显示了一些优点。
“容器专用主机操作系统是非常简单的操作系统,旨在只运行容器,禁用所有其他服务和功能,将只读文件系统和容器专用操作系统攻击面远远小于通用类型的操作系统,因此既然攻击或破坏了集装箱专用主机的操作系统,如果可能的话,各组织必须尽量使用集装箱专用主机OS。 引自《nistspecialpublication  800-190应用程序连接中心安全指南》。总结一下,明确了操作系统执行的软件和包越少,攻击面就越小,脆弱性也就越少。 这样,即使缺少频繁的补丁,容器专用的操作系统从一开始就更安全了。
容器专用操作系统也可以采用其他安全方式,例如,使根文件系统(优选所有文件系统)为只读,从而减轻漏洞带来的影响。
容器专用操作系统通常不执行(或不支持)包管理。 这减少了安装或更新软件包引起冲突,从而减少了节点或服务停止的机会。 没有Chef和Puppet等管理工具,减少了动作不完全、对系统动作稳定性产生负面影响的机会。 相反,应用了所有更新和配置的完整操作系统镜像安装在备用启动机制上,在下次重新启动时启动,或回滚到以前已知的正常镜像。 这意味着节点的配置随时是完全已知的,可以从任何版本的版本控制系统中恢复。
有些容器专用操作系统类似于通用Linux版本。 例如,VMware公司的PhotonOS与通常的Linux版本相比,安装的软件包数量较少,但也包括软件包管理器和SSH访问,人们感到困惑的是通用Linux系统的“云优化” 就像Ubuntu发布的“云镜像”一样,“Ubuntu工程部门定制,可以在公共云上运行”。 但是,这些仍然是完整的Linux版本,安装了所有软件包,但只添加了一个cloud-init软件包,因此无需手动干预即可轻松配置启动。
CoreOS是第一个普遍采用的专用于容器的操作系统,为了提高安全性和隔离性,在容器内执行所有过程的理念正在普及。 CoreOS取消了软件包管理器,重新启动到两个只读/usr分区之一,确认更新是原子的,可以回滚。 但自从酷睿操作系统被RedHat收购后,这个项目就结束了。

文/上海蓝盟  IT外包专家

IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部