4.1 容器编排平台面临的风险

作为最为流行的云原生管理与编排系统,Kubernetes具有强大功能,但同时也具有较高的程序复杂性。我们知道,风险和程序复杂性之间具有一定程度的关系,不过要分析一个复杂系统的风险并不十分容易。

在开始Kubernetes的风险分析之前,图4-1首先给出一个Kubernetes全景,以帮助大家更好地认识Kubernetes。

图4-1 Kubernetes全景图

图4-1展示了一个常见的Kubernetes集群,由一个Master节点和三个Worker节点组成,Pod之间借助CNI插件Flannel实现通信。Kubernetes自身的系统Pod(kube-system命名空间内的Pod)主要运行在Master节点上,除此之外,每个Worker节点上也分别有一个Flannel Pod和kube-proxy Pod;所有业务Pod分布在三个Worker节点上。另外,每个节点上还有一个Kubelet服务,负责管理容器。

我们将结合图4-1分析Kubernetes可能面临的风险。在分析的过程中,大家可以在分析每一个环节时回顾一下这张全景图,对照被分析对象在集群中的角色和位置,以便较好地理解Kubernetes的风险。

事实上,编排系统和容器之间并非完全独立。例如,我们在Kubernetes集群中需要以YAML声明式文件的形式来创建Pod,而Pod只是一个逻辑上的概念,实际由一个或多个容器组成。对容器的配置须以Pod的配置方式下发。

因此,我们将首先简单考察Kubernetes环境下容器基础设施的风险,由于要点在3.1节已经分析过了,这里我们仅仅将相关风险在Kubernetes下做对应说明。接着,我们主要从Kubernetes的接口、网络、访问控制机制和软件漏洞四个方面考察其风险。