用于Kubernetes的Linux使用系统指南
虽然Kubernetes确实可以实现容器的操作可扩展性和管理,但它并不直接帮你管理Kubernetes本身所依赖的基础设施。Kubernetes本身就是一个应用(或者说是一组应用),这些应用需要在某处运行起来。尽管你可能听过,Kubernetes它不是个操作系统,但仍依赖于要安装在节点上的Linux或Windows系统。Kubernetes可以在例如AWS或GCE这类云服务商,或者是VMware这类虚拟化平台上运行,但所有这些仍然需要首先安装操作系统。(某些例如AWS EKS无需管理控制平面节点,但仍需要为工作节点设置Linux服务器。) 在操作上,重点是Kubernetes和它运行的工作负载,这本该如此,但这会导致一个在Kubernetes部署上常见的问题。虽然Kubernetes会定期打补丁和升级,但是关于底层操作系统的维护,更新,安全和操作往往被遗忘或忽视,至少在安全审计之前是这样的。我经常听SRE和系统管理员说,要同时管理Linux和Kubernetes,这导致额外的工作。就像一般的Linux操作系统一样,Kubernetes也需要打补丁、更新、保护和控制用户访问等等。但是,仅仅因为这些任务是在Kubernetes级别上完成的,并不意味着它们在操作系统级别上可被忽略。不过,选择合适的底层操作系统发行版,可以在很大程度上减少维护操作系统的工作量,减轻不及时更新的影响。 因此,考虑到你需要先安装Linux才能在其上运行Kubernetes,这将涉及底层的操作系统,你应该选择运行哪个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操作的情况下升级节点的操作系统。这意味着操作系统需要:
当然,该系统需要保证在同一时刻不会有过多的节点在更新,以保证集群的工作负载能力不会受到负面影响(节点也不要太少,以免大型集群的更新速度慢于补丁和更新的发布速度)。你可能希望协调操作系统更新与Kubernetes更新,以减少重启和中断,但你仍然需要在短时间内支持更关键的操作系统更新。
通用类型Linux操作系统的最大优势是工作人员对它的熟悉程度。这意味着他们将熟悉部署,同时也具备排障技术。他们可以安装并使用常用的操作系统工具例如tcpdump、strace、lsof等等。配置可以很轻易地更改,以纠正错误和测试替代方案(这既是好事,同时也 (编辑:济宁站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |