阿里云数字新基建系列:云原生操作系统Kubernetes
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 功能扩展层

功能扩展层是对包括日志、监控、存储、镜像、路由、负载均衡、伸缩、DNS和包管理在内的,大量Kubernetes on Cloud集群扩展组件的合称。

如果没有功能扩展层,那么Kubernetes集群在云上的实现,基本上只能被称为IaaS+,即没有从根本上改变用户使用底层云资源的方式。而有了不断丰富的功能扩展层,集群才不断地接近PaaS。

大部分扩展组件都是基于某些云产品,同时采用自定义控制器的方式来实现的。比如监控扩展组件,就包括了云监控和监控控制器等部分。

这一节我们不会穷尽所有扩展组件,而是以监控、日志及DNS为例,总结功能扩展层的一般性规律和实现原理。

1.5.1 监控

监控的实现,可以分为三个阶段,分别是应用分组的创建、性能数据的收集,以及性能数据的上传和显示。

应用分组的创建,简单来说,就是运行在节点上的监控控制器通过云监控接口创建应用分组的操作。这个操作会在云监控里为集群中的应用创建对应的数据显示模板。

性能数据的收集有两个方面,一个是云监控插件对集群节点性能数据的收集,另一个是Metrics Server通过集群管控入口对集群Pod性能数据的收集。

性能数据的上传和显示,有三部分内容,一是Metrics Server将性能数据上传到集群控制台并使其显示出来,二是Metrics Server将性能数据上传到应用分组并使其显示出来,三是云监控插件将主机性能数据上传到云监控并使其显示出来。

阿里云Kubernetes集群监控系统如图1-9所示。

图1-9 阿里云Kubernetes集群监控系统

1.5.2 日志

与监控扩展组件类似,阿里云Kubernetes集群的日志扩展组件,大体上也可以分为三个阶段,分别是组件部署阶段、日志配置阶段和日志收集阶段。阿里云Kubernetes集群日志系统如图1-10所示。

首先,在组件部署阶段,用户需要给集群安装日志控制器,包括实现的日志服务的扩展资源定义CRD。

其次,在日志配置阶段,日志控制器会读取应用日志相关配置,并通过日志服务的云接口,创建对应的日志文件和配置。

最后,在日志收集阶段,日志收集工具Logtail会从容器文件或者标准输出中获取日志数据,并同步到日志服务。

图1-10 阿里云Kubernetes集群日志系统

1.5.3 DNS

集群对DNS的扩展实现,可以分两种情况,分别是基于Core DNS的实现和基于云解析DNS的实现。前一种实现适用于专有版和托管版集群,后一种实现适用于Serverless版集群。

基于Core DNS的域名解析服务,主要依靠两个机制形成的阶梯状的服务发现机制,具体实现参考图1-11。

首先是Kubernetes服务发现机制。Core DNS在收到Pod发出的域名解析请求的时候,第一步是去Kubernetes查询。

其次是云DNS服务。如果Core DNS从Kubernetes得到的响应是找不到对应的域名,则会进一步去云DNS服务查询。

图1-11 阿里云Kubernetes集群DNS系统

基于云解析的域名解析服务,主要依靠阿里云云解析产品来注册Serverless集群内服务域名。具体步骤如图1-12所示。

首先,在Serverless集群创建的时候,集群管控会为集群创建一个对应的PrivateZone。

其次,在用户创建服务的时候,集群管控会为服务域名创建对应的Private Zone记录。

最后,在Pod尝试访问服务域名的时候,Pod会直接通过云DNS服务来做域名解析,而域名解析所使用的数据,正是上一步创建的Private记录。

图1-12 阿里云Server Kubernetes集群DNS系统