You need to enable JavaScript to run this app.
导航

基本概念

最近更新时间2023.01.16 15:04:22

首次发布时间2021.11.26 11:16:47

本文为您介绍容器服务(VKE)的基本概念。帮助您在阅读相关文档时,快速理解产品知识和概念。

概念说明

容器服务托管版

容器服务的一种产品形态,由容器服务管理和维护 Kubernetes 集群的 Master 节点,用户只需要创建和部署集群中运行负载所需的 Worker 节点,从而降低用户使用 Kubernetes 容器集群的难度和成本。

集群对应 Kubernetes 中的 Cluster,是容器服务中计算、存储和网络资源的集合。

节点

对应 Kubernetes 中的 Node,是容器服务集群组成的基本元素。节点主要包括:Master 节点(控制节点)和 Worker 节点(计算节点/工作节点)。应用实际部署在 Worker 节点上,支持通过配置随机部署在 Worker 节点上或部署在指定的 Worker 节点上。
容器服务中的 节点 一般指 Worker 节点

Master 节点

集群的控制节点。主要由如下四个组件构成:

  • API Server:提供各模块之间的数据交互和通信的枢纽。
  • ETCD:分布式数据存储组件,负责存储集群的配置信息。
  • Controller Manager:通过定义资源期望状态,实现集群资源编排,保证集群中各种资源的实际状态和用户定义的期望状态一致。
  • Scheduler:负责应用调度的组件,通过配置节点/Pod 实例亲和性等,将容器调度到 Worker 节点上运行。
    集群托管模式下,Kubernetes 集群的 Master 节点由容器服务集中管理和维护,用户不需要关心。

Worker 节点

集群的计算/工作节点,即运行容器化应用的节点。容器服务的 Worker 节点目前为云服务器(ECS 实例)和虚拟节点(Virtual Node)。
Worker 节点主要运行以下组件:

  • Kubelet:Worker 节点的代理组件,主要负责与 Container Runtime 交互,并与 API Server 协同管理节点上的容器。
  • Kube-proxy:网络代理,解决节点上应用间的访问问题。
  • Container Runtime:容器运行时,如 Containerd,主要用于拉取容器镜像,管理容器的全生命周期。

节点池

集群内具有相同配置的一组节点的聚合,具备对节点资源快速弹性伸缩的能力,帮助用户高效管理 Kubernetes 集群中的节点资源。
容器服务中的节点池,分为如下两种:

  • 自定义节点池:用户可自定义节点池中的节点配置、系统配置、安全配置、高级配置、更多配置等配置能力,同时支持扩缩容、编辑节点数量等。
  • 默认节点池:在容器服务控制台上添加已有 ECS 实例到集群时,用来管理此类节点的节点池。默认节点池的安全配置、高级配置、更多配置等配置能力与标准节点池一致,但不具备扩缩容、编辑节点数量等能力。

容器网络

对应 Kubernetes 中的 CNI 资源,提供实现容器集群网络方案的技术插件。容器服务目前提供如下两种容器网络模型:

  • Flannel:独立的 Underlay 容器网络模型,配合 VPC 的全局路由能力,实现集群高性能的网络体验。
  • VPC-CNI:基于私有网络的弹性网卡 ENI 实现的 Underlay 容器网络模型,具有较高的网络通信性能。
命名空间对应 Kubernetes 中的 Namespace,是对一组资源和对象的抽象。命名空间用于划分集群资源,实现资源隔离。
容器组又称 Pod 实例(对应 Kubernetes 中的 Pod),是容器服务中可部署管理的最小计算单元。一个容器组封装一个或多个容器(Container)、存储资源(Volume)、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。
容器对应 Kubernetes 中的 Container,包含应用及其运行依赖环境的软件包。借助容器,用户可以在相对独立的环境中运行程序。

容器镜像

对应 Kubernetes 中的 Image,是封装了应用程序及其所有软件依赖的二进制数据。每个镜像有特定的唯一标识(镜像 ID),通过镜像 ID 识别镜像并部署容器应用。
容器服务支持使用火山引擎镜像仓库(CR)中的公/私有容器镜像、用户私有镜像仓库中的容器镜像和 Docker Hub 官方镜像,部署容器应用。

工作负载

对应 Kubernetes 中的 Workload,用于描述业务应用的运行载体。工作负载包括如下几种类型:

  • 无状态负载:对应 Kubernetes 中的 Deployment。一个无状态负载可以包含一个或多个 Pod 实例,每个 Pod 的角色相同,即除了名称和 IP 地址不同,其余特点完全相同。无状态负载可以通过 Pod 模板随时新建或删除 Pod。
  • 有状态负载:对应 Kubernetes 中的 StatefulSet。与 Deployment 类似,包含一个或多个 Pod 实例,但每个 Pod 都有自己单独的状态(固定的名称、启停顺序、独立存储等)。
  • 守护进程:对应 Kubernetes 中的 DaemonSet。DaemonSet 确保在集群的每个节点上运行一个 Pod,且只有一个 Pod。DaemonSet 与节点相关,若节点异常,则不会在其他节点上重新创建 Pod。
  • 任务:对应 Kubernetes 中的 Job。Job 会创建一个或者多个 Pod,负责处理一次性任务,即任务仅执行一次并确保处理任务的 Pod 成功终止。
  • 定时任务:对应 Kubernetes 中的 CronJob。CronJob 用于创建周期性、重复性的任务。
配置项对应 Kubernetes 中的 ConfigMap,适用于存储不包含敏感信息的场景。
保密字典对应 Kubernetes 中的 Secret,适用于存储密码、令牌、密钥等敏感数据的场景。

服务

对应 Kubernetes 中的 Service,提供基于四层网络的容器服务暴露能力。容器服务目前提供如下三种类型的服务:

  • 集群内访问(ClusterIP):指将工作负载暴露给同一集群内其他工作负载访问的方式,可以通过集群内部域名访问。
  • 节点端口访问(NodePort):指在每个节点的IP上开放一个静态端口,通过静态端口对外暴露服务。外部用户通过请求节点IP:节点Port,即可从集群的外部访问一个服务。
  • 负载均衡(LoadBalancer):指通过弹性负载均衡从公网访问到工作负载,提供了更高可靠性的保障。负载均衡(LoadBalancer)一般用于系统中需要暴露到公网的服务。
路由规则对应 Kubernetes 中的 Ingress,本质是一系列流量转发规则,这些规则基于 HTTP 和 HTTPS 协议进行命中和转发。路由规则可以通过域名和路径对访问做到更细粒度的划分。
存储类对应 Kubernetes 中的 StorageClass,提供了一种定义和描述所需的存储资源类型的标准化方法。
存储卷对应 Kubernetes 中的 PersistentVolume(PV),是集群中配置的一段网络存储。PV 是容量插件,如 Volumes,但其生命周期独立于使用 PV 的任意 Pod。
存储卷声明对应 Kubernetes 中的 PersistentVolumeClaim(PVC) , 是由用户进行存储的请求。
注解对应 Kubernetes 中的 Annotation,用于描述数据属性(Property)的信息,标示存储位置、历史数据、资源查找、文件记录等功能。

标签

一个键(key)值(value)对,用于标示对象的特点。容器服务中的 标签 分为两种:

  • 用户自定义或系统、平台为各种资源添加的标签(Tag)。
  • 对应 Kubernetes 中的 Lable。
污点对应 Kubernetes 中的 Taint,使节点能够排斥指定特点的的 Pod。
容忍度对应 Kubernetes 中的 Toleration,应用于 Pod 上,允许(但并不要求)Pod 调度到带有与之匹配污点的节点上。
亲和调度选择就近部署节点或 Pod 实例,实现就近路由能力,从而减少网络损耗的调度能力。
反亲和调度出于高可靠性考虑,分散部署 Pod 实例,当某个节点出现故障的时候,减少对应用的影响。
节点亲和调度对应 Kubernetes 中的 NodeAffinity,指通过节点标签控制 Pod 实例部署在特定的节点上。
节点污点调度指配合污点和容忍度,用来避免 Pod 被分配到不合适的节点上。
实例亲和调度对应 Kubernetes 中的 PodAffinity,将具有相互通信需求的 Pod 实例,部署到同一个拓扑域(TopologyKey),减少 Pod 对应业务之间网络延迟。
实例反亲和调度对应 Kubernetes 中的 PodAntiAffinity,将指 Pod 实例分散部署到不同的拓扑域(TopologyKey),提高 Pod 对应业务的稳定性。
拓扑域对应 Kubernetes 中的 TopologyKey。是一个范围的概念,一般通过节点上的标签指定,比如一个特定的节点、一个地域等。
指标伸缩在 Kubernetes 集群中用于 Pod 水平自动伸缩,它基于 CPU 和内存利用率、对 Deployment 和 Replicaset 控制器中的 Pod 数量进行自动扩缩容。
节点弹性伸缩指通过CA(Cluster Autoscaler,集群弹性伸缩)方式,根据集群中工作负载 Pod 的资源请求量,在使用限制范围内,为集群增加节点。
资源配额对应 Kubernetes 中的 Resource Quota,用于多团队或多用户的共享集群资源场景下,限制团队、用户可以使用的资源总量,包括限制命名空间下创建某一类型对象(容器、服务)的数量以及消耗计算资源(CPU、内存)的总量。
资源限制对应 Kubernetes 中的 Limit Range,用于资源的合理分配和管理,提高集群资源的利用率和可用性。
应用模板基于 Kubernetes Helm 标准模板提供的资源管理与调度功能,用于快速部署和管理 Helm 应用。
组件为集群提供的网络、存储、监控、DNS、安全、镜像、GPU 等类型的插件。
对象浏览器用于查看、部署、管理指定集群下任意 Kubernetes 资源,并实现 Custom Resource Definition(CRD)资源的可视化管理。