云容器引擎服务提供了搭建云上高可用、可扩展的Kubernetes集群的功能,整合了计算(云主机、裸金属)、网络(VPC、经典网络)、存储(云硬盘)等服务。通过云容器引擎服务您可以一键创建Kubernetes集群,无需自行搭建Docker和Kubernetes集群,配合故障恢复、自动扩容等能力,使得应用的整个生命周期都可以在云容器引擎内高效完成,简化了用户对集群的管理和对应用的运维。
集群(Cluster)是计算、存储和网络资源的集合。Kubernetes利用这些资源运行各种基于容器的应用。集群中各节点分为控制节点和工作节点两种。
控制节点:控制节点是Cluster的大脑,它的主要职责是调度,即决定将应用调度在哪里运行。
工作节点:工作节点的职责是运行容器应用(Docker)。工作节点由控制节点管理,负责监控并汇报容器应用的状态,同时根据控制节点的要求管理容器应用的生命周期。工作节点可以实现高可用,所有容器应用都会在各工作节点上部署一个副本。
云容器引擎,支持应用中无状态容器、有状态容器、守护进程集、定时任务、普通任务、容器组的管理维护。云容器引擎为用户提供全面的Kubernetes能力集可视化界面,具备自动化&一键式管理容器的能力,降低容器管理的技术门槛。
容器、Pod和Controller都是Kubernetes中的重要概念。
容器(Container):一个通过Docker镜像创建的运行实例,一个节点可以运行多个容器。
Pod:Pod是Kubernetes集群中可运行和部署应用或服务的最小单元,是最基本的执行单元。它封装了一组(一个或多个)容器(即应用),同一Pod中的容器共享存储卷和网络栈。
Controller:控制器。Kubernetes通常不会直接创建Pod,而是通过Controller来管理Pod。Controller中定义了Pod的部署特性,比如有几个副本、在什么样的节点上运行等。为了满足不同的业务场景,Kubernetes提供了多种Controller,包括Deployment(无状态应用)、StatefuleSet(有状态应用)、 ReplicaSet、DaemonSet(守护进程集)、Job(任务)等。
无状态Deployment是最常用的Controller,定义一组完全相同的Pod,如Pod名称、副本数、端口等。Deployment控制器会保证集群中的Pod与定义一致,即故障时可以自动恢复。
有状态StatefuleSet能够保证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。Kubernetes负责建立和维护Severice与Pod的映射关系。由于Pod IP是随机的,且可能因重启而改变,因此不能直接访问Pod IP。而集群IP是Service在集群中的具体实现。该IP地址一经创建便不会改变。因此,用户只需要访问集群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、内存的使用率达到设置的阈值时,集群节点会自动进行扩容,共同分担访问压力,直至达到所设置的最大节点数。
Docker镜像是容器应用打包的标准格式。在部署容器化应用时可以指定镜像,镜像可以来源于用户自定义或者官方镜像。
Ingress是一组定义链接集群服务的规则集合,用户可以通过Ingress配置提供URL,负载均衡,SSL等供外部访问。
标签是在资源对象上的一系列Key/Value键值对,用于赋予对象特殊的意义,每个对象可以拥有多个标签,但是Key值必须唯一。
提供丰富的集群实例,和丰富的操作系统镜像类型,并支持按需弹性配置集群节点的CPU、内存、硬盘和网络带宽以高效匹配业务要求。您可随时灵活调整IT资源,节约IT成本。
面向各类应用场景,采用成熟的虚拟化技术。支持自动宕机迁移与实例快照备份服务,保障业务持久运行与数据安全无忧。
云容器引擎可与大部分云服务无缝衔接,如虚拟专有云、云数据库、对象存储、负载均衡等,为您的业务发展提供完整的计算、存储与网络解决方案实施能力。
云容器引擎可搭配DDoS攻击防御、漏洞扫描等云安全防护服务,切实保证您的业务安全。搭配使用云监控服务,您可实时监控您的业务运行,及时获取资源告警信息和通知。
云容器引擎提供强大的云控制台管理功能。您可拥有弹性云主机的管理员账号,拥有实例的完全控制权,可根据业务需要及时对实例执行重要更改操作。
服务名称 |
描述 |
弹性云主机 |
在云容器引擎中具有多个云硬盘的一台弹性云服务器就是一个节点,您可以在创建节点时指定弹性云主机的规格。 |
虚拟专有云 |
在云容器引擎中创建的集群需要运行在虚拟专有云中,您创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内,从而保障网络安全。 |
负载均衡 |
云容器引擎支持将创建的应用对接到弹性负载均衡,从而提高应用系统对外的服务能力,提高应用程序容错能力。 |
NAT网关 |
NAT网关能够为VPC内的容器实例提供网络地址转换(Network Address Translation)服务,SNAT(Source Network Address Translation)功能通过绑定弹性公网IP,实现私有IP向公有IP的转换,可实现VPC内的容器实例共享弹性公网IP访问Internet。 |
容器镜像仓库 |
容器镜像服务提供的镜像仓库是用于存储、管理Docker容器镜像的场所,可以让使用人员轻松存储、管理、部署Docker容器镜像。 |
云硬盘 |
云硬盘可挂载到弹性云主机上,并支持扩容。 在云容器引擎中一个节点就是具有多个云硬盘的一台弹性云主机,您可以在创建节点时指定云硬盘的大小。 |
对象存储 |
对象存储服务是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。云容器引擎支持创建对象存储卷并挂载到容器的某一路径下。 |