云容器引擎服务提供了搭建云上高可用、可扩展的Kubernetes集群的功能,整合了计算(云主机、裸金属)、网络(VPC、经典网络)、存储(云硬盘)等服务,并通过计算可用域实现容器集群的资源独享和严格的多租户隔离功能。通过云容器引擎服务您可以一键式创建Kubernetes容器集群,无需自行搭建Docker和Kubernetes集群,配合故障恢复、自动扩容等能力,使得应用的整个生命周期都可以在云容器引擎内高效完成,简化了用户对集群的管理和对应用的运维。
云容器引擎服务主要由两部分功能组成:集群和工作负载。
集群(Cluster)是计算、存储和网络资源的集合。Kubernetes利用这些资源运行各种基于容器的应用。集群中各节点区分为控制节点和工作节点两种。
控制节点:控制节点是Cluster的大脑,它的主要职责是调度,即决定将应用调度在哪里运行。
工作节点:工作节点的职责是运行容器应用(Docker)。工作节点由控制节点管理,工作节点负责监控并汇报器应用的状态,同时根据控制节点的要求管理容器应用的生命周期。工作节点可以实现高可用,所有容器应用都会在各工作节点上部署一个副本。
用于展示与管理Kubernetes集群中的工作负载,支持应用中无状态容器、有状态容器、守护进程集、定时任务、普通任务、容器组的管理维护。旨在为用户提供全面的Kubernetes能力集可视化界面,降低容器管理的技术门槛,提供自动化&一键式管理容器的能力。
工作负载由Pods和Controller组成,Pod和Controller都是Kubernetes中的概念。
Pod:Pod是Kubernetes集群中可运行和部署应用或服务的最小单元,是最基本的执行单元。它封装了一组(一个或多个)容器(即应用),同一Pod中的容器共享存储卷和网络栈。
Controller:控制器。Kubernetes通常不会直接创建Pod,而是通过Controller来管理Pod。Controller中定义了Pod的部署特性,比如有几个副本、在什么样的节点上运行等。为了满足不同的业务场景,Kubernetes提供了多种Controller,包括Deployment、ReplicaSet、DaemonSet、StatefulSet、Job等。
无状态Deployment是最常用的Controller,定义一组完全相同的Pod,如Pod名称、副本数、端口等。 Deployment控制器会保证集群中的Pod与定义一致,即故障时可以自动恢复。
有状态StatefulSet能够保证Pod的顺序和唯一性。与Deployment一样基于一组完全相同的容器定义,但不同的是,StatefulSet为每个Pod维护一个具有黏性的身份标志,使他们不随重启改变。
守护进程集DaemonSet用于每个节点最多只运行一个Pod副本的场景,确保全部(或者某些)节点上运行一个Pod的副本。当有节点加入集群时,可以自动的向该节点调度一个Pod副本。当有节点从集群移除时,节点上Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod。
普通任务Job用于运行一个或多个Pod,并等待一定数量的Pod成功结束。当Pod成功完成时,Job会进行跟踪,当成功完成的Pod达到指定数量时,Job就成功结束。如果该Pod失败了,Job会重新创建一个Pod。
定时任务CronJob也是Job的定时调度版本,用于运行定时、重复任务,例如定时通知、定时备份等场景。
除以上功能外,云容器引擎还提供了例如命名空间管理、配置信息管理、Service配置、后端存储配置、自动扩容等功能,全面覆盖Kubernetes集群的日常维护和管理工作,如下图。
应用是以容器的形态运行的,而Kubernetes的最小调度单位是Pod,一个Pod中存在一个或多个容器,因此,对于Kubernetes的管理本质上是对容器的管理。
Service是Kubernetes中工作负载提供服务的入口,是一个应用访问另一个应用的方式。Service代表一组Pod,由于Pod IP是随机的,且可能会因重启改变,因此不应该直接访问Pod IP。而集群IP是Service在集群中的具体实现,该IP地址一经创建便不会改变,Kubernetes负责建立和维护Service与Pod的映射关系,因此用户只需要访问Service的IP,无论后端Pod如何变化,对用户都不会有任何影响。
Service提供了三种访问容器服务的方式:
集群外访问:
负载均衡(LoadBalancer):将各节点IP和端口注册到负载均衡中,请求访问时,通过负载均衡选择合适的节点,然后通过Service端口和容器端口访问对应容器。
节点访问(NodePort):请求通过节点IP、节点端口、Service端口和容器端口访问对应容器。
集群内访问(ClusterIP):通过集群IP、Service端口和容器端口访问对应容器。
存储卷PV(Persistent Volume)、存储类StorageClass、存储卷声明PVC(Persistent Volume Claim))是Kubernetes的存储池管理方案,用于为集群提供存储空间。
PV:后端存储的一块存储空间。云容器引擎的后端存储可以是云服务中的云硬盘,也可以是在集群工作节点上划分的一块存储空间。
StorageClass:PV的模板,对PV中的部分固定配置项(文件系统、存储类型、存储服务端信息等)说明。创建PVC时可以选择StorageClass,Kubernetes会自动为PVC创建PV。
PVC:对PV的申请说明。在PVC中指定存储资源的容量大小和访问模式(比如只读)等信息,部署应用时选择该PVC,Kubernetes即会自动为应用挂载符合条件的PV。
配置项(ConfigMap)和密钥(Secret)组成了Kubernetes的配置系统。将配置与容器镜像分离,使配置信息不随容器的销毁或重启而消失或改变。容器创建后可直接加载使用,以实现最大化的可移植性;同时,通过统一的配置中心,也可以集中式的对配置信息进行管理维护。
配置项:用于定义容器服务的一些固定配置信息,如日志存储路径、Pod间依赖关系等。
密钥:用于保存敏感数据,如密钥、证书等。
用于实现应用间的逻辑隔离(节点和存储除外),不同命名空间的应用默认不可以互相访问。
当CPU、内存的使用率达到设置的阀值时,集群节点会自动进行扩容,共同分担访问压力,直至达到所设置的最大节点数。
服务 |
关系 |
应用管理 |
在应用管理中创建容器应用时选择的独享集群资源即云容器引擎服务创建的集群。 云容器引擎的工作负载功能中展示的是集群自身容器应用的工作负载;如果部署了“PaaS组件包”,还会展示部署在云容器引擎集群中容器应用的工作负载。 |
资源-容器 |
|