1.2 云资源层

云资源层和云上Kubernetes之间的关系,相当于计算机硬件与操作系统之间的关系。云资源层为Kubernetes提供了有弹性优势的软硬件基础,如云服务器、安全组、专有网络、负载均衡、资源编排等。

从本质上来说,Kubernetes本身并不提供任何计算、网络或存储资源,它仅仅是这些底层资源的封装。

容器集群对底层资源封装的程度,在不同厂商的实现中,可能完全不同。以阿里云为例,用户除了可以通过容器服务的接口使用集群外,还可以通过底层资源的接口(如负载均衡控制台)来对集群底层资源做操作。但是这种操作具有一定程度的风险,如无必要,不要直接操作底层资源。

在以下三节中,我们分别看一下阿里云容器集群三种形态的组成原理,包括专有版、托管版及Serverless版。

1.2.1 专有版

首先是资源管理。专有版集群使用了多种云资源,如图1-2所示。在实现的时候,我们可以选择使用编码的方式来管理这些资源实例的生命周期,但这显然是低效的。阿里云的选择是,以资源编排(ROS)模板为基础,结合用户自定义配置来统一管理底层资源。

图1-2 阿里云专有版Kubernetes集群组成原理

其次是集群网络。专有版集群在被创建之初,就被指定了专有网络VPC的配置,如节点网段等。VPC实例被创建之后,其他所有集群资源,都必然和这个VPC实例相关联。VPC的安全组,在这里扮演着集群网络的防火墙角色。

再次是计算资源。集群在默认情况下会创建三个云服务器作为管控节点,同时集群会根据用户的需求,创建若干云服务器作为集群的Worker节点。这些Worker节点与弹性伸缩实例绑定,以实现节点伸缩功能。集群节点和RAM(访问控制)的角色绑定,以授权集群内部组件访问其他云资源。另外,集群节点可以挂载云盘并以本地存储形式来使用。

最后是接口实现。集群使用NAT网关作为集群默认的网络出口,使用SLB(负载均衡)作为集群的入口,这包括API Server入口,以及图中未包括的Service的入口。