• 文档
  • 控制台
  • 登录
  • 立即注册
    目前不支持用户自主注册,如需注册账号,请联系400-080-1100
容器服务 CKE
下载PDF

2 Kubernetes基础知识

2.1 什么是Kubernetes

2.1.1 Kubernetes概述

Kubernetes是一个容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常需要部署该应用的多个实例以便对应用请求进行负载均衡。了解更多请参考https://kubernetes.io/zh-cn/。

2.1.2 Kubernetes集群架构

Kubernetes集群包含master节点(控制节点)和node节点(计算节点/工作节点),应用部署在node节点上,且可以通过配置选择应用部署在某些特定的节点上。

2.1.2.1 Master节点

Master节点是集群的控制节点,在生产环境中,为了保障集群的高可用,通常会部署多个master,如CKE的集群高可用模式就是3个master节点。

Master节点由以下四个组件构成:

•API Server

各组件互相通讯的中转站,接受外部请求,并将信息写到ETCD中。

•Controller Manager

执行集群级功能,例如复制组件,跟踪Node节点,处理节点故障等。

•Scheduler

负责应用调度的组件,根据各种条件(如可用的资源、节点的亲和性等)将容器调度到Node上运行。

•ETCD

一个分布式数据存储组件,负责存储集群的配置信息。

2.1.2.2 Node节点

Node节点是集群的计算节点,即运行容器化应用的节点。

Node节点主要由以下组件构成:

•kubelet

主要负责同Container Runtime打交道,并与API Server交互,管理节点上的容器。

•kube-proxy

应用组件间的访问代理,解决节点上应用的访问问题。

•Container Runtime

容器运行时,如Docker,最主要的功能是下载镜像和运行容器。

2.2 什么是容器

2.2.1 Docker容器

Docker是第一个使容器能在不同机器之间移植的系统,是容器打包和运行时系统的标准,主要用于管理各个节点上的容器。

Docker不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。开发者在Dockerfiles中构建容器镜像,上传到镜像仓库中,用户只需从镜像仓库下载该镜像文件,即可开始使用。

2.2.2 容器技术

容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。

2.2.3 容器典型使用流程

Docker容器相关概念如下:

镜像

Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。

镜像仓库

Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。

容器

Docker容器通常是一个Linux容器,它基于Docker镜像被新建。一个运行中的容器一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。

Docker容器典型的使用流程如下:

(1)首先开发者在开发环境机器上开发应用并制作镜像。

Docker执行命令,构建镜像并存储在机器上。

(2)开发者发送上传镜像命令。

Docker收到命令后,将本地镜像上传到镜像仓库。

(3)开发者向生产环境机器发送运行镜像命令。

生产环境机器收到命令后,Docker会从镜像仓库拉取镜像到机器上,然后基于镜像运行容器。

2.3 容器网络

容器网络为集群内Pod分配IP地址并提供网络访问服务。

2.3.1 CKE支持三种网络插件

表2-1 网络插件描述

image.png

2.3.1.2 Tuft

原理介绍

TUFT网络采用VPC路由方式与底层网络深度整合。原理如下:

•基于Calico:TUFT插件基于Calico,继承了其基于BGP的L3路由、高性能网络通信、强大的网络策略和高可扩展性等功能。

•VPC网段IP分配:TUFT支持从VPC网段中为容器分配IP地址,使容器成为VPC网络的一部分,实现与VPC网络内其他服务的无缝通信。

•双向通信:TUFT实现了容器与VPC网络内其他服务的双向通信,如虚拟机、数据库等。这种集成提高了云原生应用的兼容性和可用性。

•BGP集成:TUFT通过BGP协议与VPC网络中的路由器或其他网络设备建立连接,实现动态路由信息交换,保证容器与VPC网络之间的通信畅通。

•网络策略扩展:TUFT在Calico网络策略基础上进行扩展,支持基于VPC网络内的IP地址、端口和协议等因素控制容器与VPC网络内其他服务的通信,提高网络安全性。

优点

•没有隧道封装,性能较高,网络问题易于排查。

•支持VPC内集群外服务与容器IP双向直通。

使用限制

•节点数量受限于虚拟VPC的路由配额。

•每个节点将会被分配固定大小的IP地址段。

2.3.1.3 Calico

原理介绍

Calico采用了一个简单的、高效的三层路由架构,使用BGP协议进行路由交换,从而提供了高可扩展性和高性能的网络服务。原理如下:

•网络模型:Calico使用基于BGP(边界网关协议)的纯L3路由来实现容器间通信。避免了传统的覆盖网络模型,从而实现了更高的性能和更简单的网络架构。

•IP分配:Calico为集群中的每个容器分配一个唯一的IP地址。容器间通信不需要任何NAT(网络地址转换)操作,从而简化了网络流程。

•节点间路由:Calico使用BGP协议在Kubernetes集群节点之间建立路由信息。每个节点上运行一个BGP客户端,负责广播本地容器的IP地址及其路由信息,并学习其他节点上容器的路由信息。

•网络策略:Calico提供了强大的网络策略功能,可以对容器间的通信进行精细控制。通过定义网络策略,用户可以基于IP地址、端口和协议等因素控制容器间的流量。

•可扩展性:Calico具有很高的可扩展性,支持大规模Kubernetes集群。由于Calico使用纯L3路由,避免了传统覆盖网络中的性能瓶颈。

通过这种方式,Calico能够为Kubernetes集群提供高性能、可扩展且安全的容器间网络通信。

在CKE中使用Calico网络时,采用BGPRR模式通信,每个节点都被视为一个BGPPeer,并且所有节点都有权在网络中传播路由信息。

优点

•没有隧道封装,跨节点通过本地路由转发,性能好。

•容器网络和节点网络解耦,不受VPC配额规格限制。

使用限制

•VPC内集群外服务无法直接访问容器IP。

•每个节点将会被分配固定大小的IP地址段。

2.3.1.4 Flannel

Flannel是Kubernetes中最常用的网络插件之一,其原理如下:

子网分配:Flannel使用etcd(一个分布式键值存储系统)为集群中的每个主机分配一个唯一的子网。子网信息存储在etcd中,供所有节点查询。

•节点间信息共享:每个Kubernetes节点上运行一个Flannel实例。Flannel实例从etcd获取子网信息,并在本地主机上分配一个子网。Flannel还监听etcd中其他节点的子网信息,以便每个实例都能知道整个集群中所有节点的子网信息。

•容器IP分配:当在Kubernetes集群中创建容器时,容器会被分配一个IP地址,这个IP地址位于所在主机的Flannel子网内。

•容器间通信:Flannel实现了跨主机的容器间通信。当一个容器与另一个容器通信时,Flannel会根据目标容器的IP地址查询目标容器所在的子网和主机,然后使用封装技术(如VXLAN)将原始网络包封装并通过UDP协议发送到目标主机。目标主机上的Flannel实例解封装网络包并将其发送到目标容器。

通过这种方式,Flannel能够为Kubernetes集群提供跨主机的容器间网络通信,同时保持网络隔离。在CKE中使用Flannel网络时,采用VXLAN协议通信。

优点

•容器网络和节点网络解耦,不受VPC配额规格限制。

•支持大规模组网。

使用限制

•VPC内集群外服务无法直接访问容器IP。

•基于VXLAN隧道封装,存在一定的性能损失。

•每个节点将会被分配固定大小的IP地址段,存在一定的容器IP地址浪费。

2.4 容器安全

云工作负载安全 CWP服务为容器服务 CKE提供了安全策略、威胁检测、安全防御、主动防御等安全能力。

2.4.1 安全策略

您可以使用合规基线创建基线扫描策略,发现服务器风险点并根据修复建议加固服务器并满足安全合规要求。租户侧基线类型包括CECloud Linux操作系统最佳实践、Linux操作系统等保三级、Linux操作系统等保二级。具体操作请参考对应版本的《云工作负载安全 CWP 用户指南》“检测规则-合规基线”章节。

2.4.2 威胁检测

近些年入侵技术发展很快,网络攻击手段逐步从物理机转向虚拟机、容器、K8s集群。针对这种变化,入侵检测能力也需要不断适配新的保护对象,同时提供更多锚点的检测能力以及可持续的安全运营规则的加持,从而能够实时、准确地感知入侵事件,发现失陷主机或容器,并提供对入侵事件的响应手段。具体操作请参考对应版本的《云工作负载安全 CWP 用户指南》“反弹shell”、“病毒木马”、“进程异常行为”、“容器逃逸”、“告警处理方式简介”章节。

2.4.3 安全防范

具体操作请参考对应版本的《云工作负载安全 CWP 用户指南》“容器漏洞”章节。

2.4.4 主动防御

容器防火墙是一种为容器环境提供的防火墙服务,支持对容器集群内部与外部的网络流量进行控制好拦截,防止恶意访问和攻击。具体操作请参考对应版本的《云工作负载安全 CWP 用户指南》“容器防火墙”章节。

意见反馈

文档内容是否对您有帮助?

如您有其他疑问,您也可以通过在线客服来与我们联系探讨 在线客服

联系我们
回到顶部