2.1 操作系统
如何为计算节点选择操作系统是规划计算节点面临的首要问题。Kubernetes 支持大部分Linux 发行版、MacOS 和Windows。Linux 是数据中心操作系统的主流,因此本书对操作系统的探讨也只在Linux 上展开。如今数据中心的节点规模不断增大,操作系统与数据中心的性能和稳定性息息相关。
Linux 内核可以分为官方维护的内核版本、各大Linux 发行厂商的维护版本中,以及各大厂商自己维护的版本。Linux 内核有主线版本、稳定版本,以及长期支持(Long Term Support,LTS)版本。
主线版本包含新硬件支持、内核新特性、内核性能优化、Bug 修改等,其发布周期是2~3 个月。当主线版本发布后,其合入的相关Bug 修复,可以被合入其他稳定版本。维护人员基于需求决定是否要合入相关问题,并且做版本发布,发布周期一般一周一次。此外,一些内核版本会被定义为长期支持版本,主线版本上主要的Bug 修复都会移植到该版本上,其维护周期是2~6 年。
除Linux 官方内核版本外,众多Linux 发行版也会维护一套内核版本,以提供对内核版本的个性化修改及更长周期的支持。
内核的稳定性和维护时间周期是内核选择的最重要的考量因素。专门的人员维护、较多的Bug 修复、规模化的使用及较长时间的维护周期,都给内核维护工作带来了比Linux社区维护版本更大的优势。
Linux 有众多发行版本,一个发行版本包含bash、rm 等GNU 软件、Linux 内核及通用软件。不同的Linux 发行版本可能使用不同的内核。用户亦可自制操作系统镜像,其优势是可对内核进行定制化,例如增加功能或修复漏洞,还可以进行版本的升级和降级。
目前被广泛使用的Linux 发行版本包括Ubuntu 和Redhat 的数个发布版本。
RHEL/CentOS/Fedora 均由Redhat 发布。RHEL 是面向企业客户的收费版本。CentOS基于RHEL 的社区版本发展成为由各自社区维护的免费版。它与RHEL 兼容,但是不包含RHEL 商业化软件。CentOS 每两年左右会发布一个新版本,版本维护周期是10 年。Fedora由早期的Redhat 桌面版本发展而来,也由各自的社区进行维护,但更新频率比较高,包含的新功能、新特性较多,而这意味着稳定性会比较差,发布周期约为6 个月。Redhat是Linux 发行版的内核版本,相对其他发行版本较低,譬如CentOS 7 的内核版本为3.10版本,CentOS 8 的内核版本为4.18 版本。但是无论内核版本是新的还是旧的,关键的Bug修复都会移植到还在维护期的版本上。
Ubuntu 是基于Debian 开发的,包含桌面版、服务器版等子版本。Ubuntu 所有系列的发行版本都是免费的,发行方提供对使用Ubuntu 的用户的商业支持。Ubuntu 版本于每年的4 月和10 月发布新版本,在每隔两年的4 月发布可以提供5 年维护周期的长期支持版本,而其他版本只提供9 个月的维护周期。
值得一提的是,为适应容器的应用特性,业界发布了众多容器操作系统,例如Redhat的Atomic、Ubuntu 的Core 及CoreOS 等。这些操作系统的主要特性是,将基础文件系统目录设置为只读,在大规模的集群中,此特性可以有效地保证节点操作系统的一致性。此外,操作系统的额外管理工具可以通过容器部署,无须更改操作系统本身。这些容器操作系统中包含了软件包管理工具,可以很方便地对操作系统镜像进行升级和回退,解决大规模集群中节点的操作系统升级和版本控制问题。
在规划操作系统内核时,在众多的发行版本中,如何选择适合企业业务需求的版本呢?下面来看几个Linux 的主要版本:
● RHEL 是商业收费版本,因此使用RHEL 是有成本的。同时,随着集群规模的扩张,License 费用也会迅速提高。
● Fedora 的稳定性和维护周期决定了它不适合做服务器。
● 容器操作系统在设计理念上具有先进性,但未大规模投入使用,且目前生态还不够成熟。
基于稳定性、成本等原因排除以上三个发行版本后,大部分的云计算服务提供方都会选择CentOS 或Ubuntu 来作为主要的操作系统。CentOS 和Ubuntu 都是很优秀的发行版本,因为它们具有如下特性:
● 免费,使用成本较低。
● 应用程序丰富,可以满足多方面的使用需求,并且众多的应用部署可以更快地暴露系统问题,提升问题的修复速度。
● 各自社区的活跃度高,系统出现故障时,社区讨论是解决问题的高效手段。
与Ubuntu 相比,CentOS 的维护周期更长,软件更新频度更低,企业可以根据实际的节点需求和操作系统升级周期来选择操作系统的发行版本。