十一、华为云Stack容器服务介绍
1.云容器引擎服务CCE
云容器引擎(Cloud Container Engine,CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器。借助云容器引擎,可以在云上轻松部署、管理和扩展容器化应用程序。
1.1 基本概念
a.集群Cluster
集群指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。可以理解为集群是"同一个子网中一个或多个弹性云服务器(又称:节点)" 通过相关技术组合而成的计算机群体,为容器运行提供了计算资源池。
b.节点Node
每一个节点对应一台服务器(可以是虚拟机实例或者物理服务器),容器应用运行在节点上。节点上运行着Agent代理程序(kubelet),用于管理节点上运行的容器实例。集群中的节点数量可以伸缩。
c.节点池NodePool
节点池是集群中具有相同配置的一组节点,一个节点池包含一个节点或多个节点。
d.安全组
安全组是一个逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则, 当弹性云服务器加入该安全组后,即受到这些访问规则的保护。
集群、虚拟私有云、安全组和节点的关系
如上图。同一个Region下可以有多个虚拟私有云(VPC)。虚拟私有云由一个个子网组成,子网与子网之间的网络交互通过子网网关完成,而集群就是建立在某个子网中。
因此,存在以下三种场景:
-
不同集群可以创建在不同的虚拟私有云中。
-
不同集群可以创建在同一个子网中。
-
不同集群可以创建在不同的子网中。
e.实例Pod
实例(Pod)是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运 行方式的策略选项。
f.容器Container
一个通过 Docker 镜像创建的运行实例,一个节点可运行多个容器。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。
g.工作负载
工作负载即Kubernetes对一组Pod的抽象模型,用于描述业务的运行载体,包括 Deployment、Statefulset、Daemonset、Job、CronJob等多种类型。
-
**无状态工作负载:**即kubernetes中的"Deployment",无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:nginx、 wordpress等。
-
**有状态工作负载:**即kubernetes中的"StatefulSet",有状态工作负载支持实例有序部署和删除,支持持久化存储,适用于实例间存在互访的场景,如ETCD、 mysql-HA等。
-
**创建守护进程集:**即kubernetes中的"DaemonSet",守护进程集确保全部(或者某些)节点都运行一个Pod实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如ceph、fluent、Prometheus Node Exporter等。
-
**普通任务:**即kubernetes中的"Job",普通任务是一次性运行的短任务,部署完成后即可执行。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。
-
**定时任务:**即kubernetes中的"CronJob",定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。
h.编排模板
编排模板包含了一组容器服务的定义和其相互关联,可以用于多容器应用的部署和管理。
i.镜像Image
Docker镜像是一个模板,是容器应用打包的标准格式,用于创建Docker容器。或者说,Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、 用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。在部署容器化应用时可以指定镜像,镜像可以来自于容器镜像服务或者用户的私有Registry。例如一个Docker镜像可以包含一个完整的Ubuntu操作系统环境,里面仅安装了用户需要的应用程序及其依赖文件。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
j.命名空间Namespace
命名空间是对一组资源和对象的抽象整合。在同一个集群内可创建不同的命名空间, 不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务,也能够互不干扰。例如:
● 可以将开发环境、测试环境的业务分别放在不同的命名空间。
● 常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。
k.服务Service
Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。使用Kubernetes,用户无需修改应用程序即可使用不熟悉的服务发现机制。 Kubernetes 为Pods提供自己的IP地址和一组Pod的单个DNS名称,并且可以在它们之间进行负载平衡。 Kubernetes允许指定一个需要的类型的 Service,类型的取值以及行为如下:
-
**ClusterIP:**集群内访问。通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 ServiceType。
-
**NodePort:**节点访问。通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。 通过请求 :,可以从集群的外部访问一个 NodePort 服务。
-
**LoadBalancer:**负载均衡。使用云提供商的负载均衡器,可以向外部暴露服务。 外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务。
l.,七层负载均衡Ingress
Ingress是为进入集群的请求提供路由规则的集合,可以给service提供集群外部访问的 URL、负载均衡、SSL终止、HTTP路由等。
m.网络策略NetworkPolicy
NetworkPolicy提供了基于策略的网络控制,用于隔离应用并减少攻击面。它使用标签选择器模拟传统的分段网络,并通过策略控制它们之间的流量以及来自外部的流量。
n.配置项Configmap
Configmap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。Configmap跟secret很类似,但它可以更方便地处理不包含敏感信息的字符串。
o.密钥Secret
Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。
p.标签Label
标签其实就一对 key/value,被关联到对象上,比如Pod。标签的使用倾向于能够标示对象的特殊特点,并且对用户而言是有意义的,但是标签对内核系统是没有直接意义的。
q.选择器LabelSelector
Label selector是Kubernetes核心的分组机制,通过label selector客户端/用户能够识别 一组有共同特征或属性的资源对象。
r.注解Annotation
Annotation与Label类似,也使用key/value键值对的形式进行定义。 Label具有严格的命名规则,它定义的是Kubernetes对象的元数据(Metadata),并且用于Label Selector。 Annotation则是用户任意定义的"附加"信息,以便于外部工具进行查找。
s.存储卷PersistentVolume
PersistentVolume(PV)是集群之中的一块网络存储。跟 Node 一样,也是集群的资源。
t.存储声明PersistentVolumeClaim
PV 是存储资源,而PersistentVolumeClaim (PVC) 是对 PV 的请求。
PVC 跟 Pod 类似:Pod 消费 Node 资源,而 PVC 消费 PV 资源;Pod 能够请求 CPU 和内存资源, 而 PVC 请求特定大小和访问模式的数据库逻辑卷。
u.弹性伸缩HPA
Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能。Kubernetes集群可以通过Replication Controller的scale机制完成服务的扩容或缩容,实现具有伸缩性的服务。
v.亲和性与反亲和性
在应用没有容器化之前,原先一个虚机上会装多个组件,进程间会有通信。但在做容器化拆分的时候,往往直接按进程拆分容器,比如业务进程一个容器,监控日志处理或者本地数据放在另一个容器,并且有独立的生命周期。这时如果容器进程分布在网络中两个较远的点,请求经过多次转发,性能会很差。
-
**亲和性:**可以实现就近部署,增强网络能力实现通信上的就近路由,减少网络的损耗。如:应用A与应用B两个应用频繁交互,所以有必要利用亲和性让两个应用的尽可能的靠近,甚至在一个节点上,以减少因网络通信而带来的性能损耗。
-
**反亲和性:**主要是出于高可靠性考虑,尽量分散实例,某个节点故障的时候,对应用的影响只是 N 分之一或者只是一个实例。如:当应用采用多副本部署时,有 必要采用反亲和性让各个应用实例打散分布在各个节点上,以提高HA。
-
**节点亲和性(NodeAffinity):**通过选择标签的方式,可以限制pod被调度到特定的节点上。
-
**节点反亲和性(NodeAntiAffinity):**通过选择标签的方式,可以限制pod不被调度到特定的节点上。
-
**工作负载亲和性(PodAffinity):**指定工作负载部署在相同节点。用户可根据业务需求进行工作负载的就近部署,容器间通信就近路由,减少网络消耗。
-
**工作负载反亲和性(PodntiAffinity):**指定工作负载部署在不同节点。同个工作负载的多个实例反亲和部署,减少宕机影响;互相干扰的应用反亲和部署,避免干扰。
w.资源配额Resource Quota
资源配额(Resource Quotas)是用来限制用户资源用量的一种机制。
x.资源限制Limit Range
默认情况下,K8S中所有容器都没有任何CPU和内存限制。LimitRange(简称limits)用 来给Namespace增加一个资源限制,包括最小、最大和默认资源。在pod创建时,强制执行使用limits的参数分配资源。
y.环境变量
环境变量是指容器运行环境中设定的一个变量,可以在创建容器模板时设定不超过 30个的环境变量。环境变量可以在工作负载部署后修改,为工作负载提供了极大的灵 活性。在CCE中设置环境变量与Dockerfile的"ENV"效果相同。
1.2 与其它云服务的关系
云容器引擎需要与其他云服务协同工作,云容器引擎需要获取如下云服务资源的权限。
WWW
- 弹性云服务器 ECS
在云容器引擎中具有多个云硬盘的一台弹性云服务器就是一个节点,用户可以在创建节点时指定弹性云服务器的规格。
- 虚拟私有云 VPC
虚拟私有云为弹性云服务器提供一个逻辑上完全隔离的虚拟网络环境。用户可以完全掌控自己的虚拟网络,包括申请弹性带宽/IP、创建子网、配置DHCP、设置安全组等。 也可以通过专线/VPN等连接方式将VPC与传统数据中心互联互通,灵活整合资源。
- 弹性负载均衡 ELB
云容器引擎支持将创建的应用对接到弹性负载均衡,从而提高应用系统对外的服务能力,提高应用程序容错能力。
- NAT 网关
NAT网关能够为VPC内的容器实例提供网络地址转换(Network Address Translation)服务,SNAT功能通过绑定弹性公网IP,实现私有IP向公有IP的转换,可实现VPC内的容器实例共享弹性公网IP访问Internet。
- 容器镜像服务 SWR
容器镜像服务提供的镜像仓库是用于存储、管理docker容器镜像的场所,可以让使用 人员轻松存储、管理、部署docker容器镜像。
- 云硬盘 EVS
在云容器引擎中一个节点就是具有多个云硬盘的一台弹性云服务器,可以在创建节点时指定云硬盘的大小。
- 对象存储服务 OBS
云容器引擎支持创建OBS对象存储卷并挂载到容器的某一路径下。
- 弹性文件服务 SFS
用户可以使用弹性文件服务作为容器的持久化存储,在创建任务负载的时候挂载到容器上。
- 应用运维管理 AOM
云容器引擎对接了AOM,AOM会采集容器日志存储中的".log"等格式日志文件,转储到AOM中,方便用户查看和检索;并且云容器引擎基于AOM进行资源监控,为用户提供弹性伸缩能力。
1.3 应用场景
a.弹性伸缩架构
应用场景:
-
电商客户遇到促销、限时优惠等活动期间,访问量激增,需及时、自动扩展云计算资源。
-
视频直播客户业务负载变化难以预测,需要根据CPU/内存使用率进行实时扩缩容。
-
游戏客户每天中午12点及晚上18:00-23:00间需求增长,需要定时扩容。
价值: 云容器引擎可根据用户的业务需求预设策略自动调整计算资源,使云服务器或容器数量自动随业务负载增长而增加,随业务负载降低而减少,保证业务平稳健康运行,节省成本。
优势:
-
**自由灵活:**支持多种策略配置,业务流量达到扩容指标,秒级触发容器扩容操作。
-
**高可用 :**自动检测伸缩组中实例运行状况,启用新实例替换不健康实例,保证业务健康可用。
**建议搭配使用:**autoscaler插件(集群自动扩缩容)+应用运维管理 AOM(工作负载伸缩)
b.微服务治理
应用场景: 伴随着互联网技术的不断发展,各大企业的系统越来越复杂,传统的系统架构越来越 不能满足业务的需求,取而代之的是微服务架构。微服务是将复杂的应用切分为若干 服务,每个服务均可以独立开发、部署和伸缩;微服务和容器组合使用,可进一步简 化微服务的交付,提升应用的可靠性和可伸缩性。 随着微服务的大量应用,其构成的分布式应用架构在运维、调试、和安全管理等维度 变得更加复杂,在管理微服务时,往往需要在业务代码中添加微服务治理相关的代 码,导致开发人员不能专注于业务开发,还需要考虑微服务治理的解决方案,并且将 解决方案融合到其业务系统中。
价值: 云容器引擎深度集成应用服务网格,提供开箱即用的应用服务网格流量治理能力,用 户无需修改代码,即可实现灰度发布、流量治理和流量监控能力。
优势:
● 开箱即用:与云容器引擎无缝对接,一键开启后即可提供非侵入的智能流量治理解决方案。
● 策略化智能路由:无需修改代码,即可实现HTTP、TCP等服务连接策略和安全策略。
● 流量治理可视化:基于无侵入的监控数据采集,深度整合APM能力,提供实时流量拓扑、调用链等 服务性能监控和运行诊断,构建全景的服务运行视图,可实时、一站式观测服务 流量健康和性能状态。
建议搭配使用: 弹性负载均衡 ELB + 应用性能管理 APM + 应用运维管理 AOM
c.DevOps 持续交付
**应用场景:**当前IT行业发展日益快速,面对海量需求必须具备快速集成的能力。经过快速持续集 成,才能保证不间断的补全用户体验,提升服务质量,为业务创新提供源源不断的动 力。大量交付实践表明,不仅传统企业,甚至互联网企业都可能在持续集成方面存在 研发效率低、工具落后、发布频率低等方面的问题,需要通过持续交付提高效率,降 低发布风险。 价值: 云容器引擎搭配容器镜像服务提供DevOps持续交付能力,能够基于代码源自动完成代 码编译、镜像构建、灰度发布、容器化部署,实现一站式容器化交付流程,并可对接
价值: 云容器引擎搭配容器镜像服务提供DevOps持续交付能力,能够基于代码源自动完成代 码编译、镜像构建、灰度发布、容器化部署,实现一站式容器化交付流程,并可对接 已有CI/CD,完成传统应用的容器化改造和部署。
优势:
- **高效流程管理:**更优的流程交互设计,脚本编写量较传统CI/CD流水线减少80%以上,让CI/CD管 理更高效。
- **灵活的集成方式:**提供丰富的接口便于与企业已有CI/CD系统进行集成,灵活适配企业的个性化诉求。
- **高性能:**全容器化架构设计,任务调度更灵活,执行效率更高。
建议搭配使用: 容器镜像服务SWR + 对象存储服务 OBS + 虚拟专用网络 VPN
d.高性能 AI 计算
**应用场景:**对于AI、基因测序、视频处理等行业的用户,其计算任务依赖特殊的硬件,如GPU 等,用户需要将计算业务部署在云上,弹性利用云上的特殊硬件算力,而在私有云部 署一般业务,避免大规模使用特殊硬件带来的成本压力。
价值:
面向AI计算的容器服务,采用高性能GPU计算实例,并支持多容器共享GPU资源,在 AI计算性能上比通用方案提升3-5倍以上,并大幅降低了AI计算的成本,同时帮助数据 工程师在集群上轻松部署计算应用,您无需关心复杂的部署运维,专注核心业务,快速实现从0到1快速上线。
优势:
-
**高效计算:**GPU资源多容器共享调度,整体计算成本大幅降低。
-
成熟应用
-
主流GPU型号全适配,并在EI产品大规模使用。
建议搭配使用: GPU加速云服务器 + 弹性负载均衡 ELB + 对象存储服务 OBS
2.容器镜像服务SWR
容器镜像服务(SoftWare Repository for Container,SWR)是一种支持镜像全生 命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助您快速部署容器化服务。
容器镜像服务可配合云容器引擎CCE使用,也可单独作为容器镜像仓库使用。
2.1 产品功能
-
**镜像全生命周期管理:**容器镜像服务支持镜像的全生命周期管理,包括镜像的上传、下载、删除等。
-
**私有镜像仓库:**容器镜像服务提供私有镜像库,并支持细粒度的权限管理,可以为不同用户分配 相应的访问权限(读取、编辑、管理)。
-
**大规模镜像分发加速:**容器镜像服务通过镜像下载加速技术,使CCE集群下载镜像时在确保高并发下能获 得更快的下载速度。
-
**镜像仓库触发器:**容器镜像服务支持容器镜像版本更新自动触发部署。您只需要为镜像设置一个触 发器,通过触发器,可以在每次镜像版本更新时,自动更新使用该镜像部署的应 用。
2.2 访问容器镜像服务
云平台提供了Web化的服务管理平台(即管理控制台)和基于HTTPS请求的API (Application programming interface)管理方式。
-
**API方式:**如果用户需要将容器镜像服务集成到第三方系统,用于二次开发,请使用API方式 访问容器镜像服务。
-
**管理控制台方式:**其他相关操作,请使用管理控制台方式访问容器镜像服务。
2.3 基本概念
a.容器Container
一个通过Docker镜像创建的运行实例,一个节点可运行多个容器。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
b.镜像仓库Repository
镜像仓库(Repository)用于存放Docker镜像。单个镜像仓库可对应单个具体的容器 应用,并托管该应用的不同版本。
c.组织
组织用于隔离镜像仓库,每个组织可对应一个公司或部门,将其拥有的镜像集中在该 组织下。同一用户可属于不同的组织。支持为帐号下不同用户分配相应的访问权限 (读取、编辑、管理)。
2.4 与其他云服务的关系
容器镜像服务需要与其他云服务协同工作,容器镜像服务和其他云服务的关系如下图
- 云容器引擎
容器镜像服务能无缝对接CCE,用户可以将容器镜像服务中的镜像部署到CCE中。
- 云审计服务
通过CTS,用户可以记录与容器镜像服务相关的操作事件,便于日后的查询、审计和回溯。
3.应用服务网格ASM
应用服务网格ASM提供非侵入式的微服务治理解决方案,支持完整的生命周期管理和 流量治理,兼容Kubernetes和Istio生态,功能包括负载均衡、熔断、故障注入等多种 治理能力。并内置金丝雀、蓝绿灰度发布流程,提供一站式自动化的发布管理。
3.1 Istio
Istio提供了一个完整的解决方案,通过为整个服务网格提供行为洞察和操作控制来满足微服务应用程序的多样化需求。
Kubernetes提供了部署、升级和有限的运行流量管理能力,但并不具备熔断、限流等能力。Istio是基于Kubernetes构建的开放平台,它很好的补齐了Kubernetes在微服务 治理上的诸多能力。
想要让服务支持Istio,只需要在环境中部署一个特殊的Sidecar代理,使用Istio控制平面功能配置和管理代理,拦截微服务之间的所有网络通信:
-
实现HTTP、gRPC、WebSocket和TCP流量的自动负载均衡。
-
通过丰富的路由规则、重试和故障注入,可以对流量行为进行细粒度控制。
-
对出入集群入口和出口中所有流量自动度量指标、日志记录和追踪。
-
通过强大的基于身份的验证和授权,在集群中实现安全的服务间通信。
Istio旨在实现可扩展性,满足各种部署需求。
3.2 基本概念
a.金丝雀发布
又称灰度发布,是迭代的软件产品在生产环境安全上线的一种重要手段。在生产环境上引一部分实际流量对一个新版本进行测试,测试新版本的性能和表现,在保证系统整体稳定运行的前提下,尽早发现新版本在实际环境上的问题。
b.蓝绿发布
蓝绿发布提供了一种零宕机的部署方式。不停老版本,部署新版本进行测试,确认运行正常后,将流量切到新版本,然后老版本同时也升级到新版本。始终有两个版本同时在线,有问题可以快速切换。
c.流量治理
应用流量治理提供可视化云原生应用的网络状态监控,并实现在线的网络连接和安全 策略的管理和配置,当前支持连接池、熔断、负载均衡、HTTP头域、故障注入等能力。
d.连接池管理
配置TCP和HTTP的连接和请求池相关阈值,保护目标服务,避免对服务的过载访问。
e.熔断
配置快速响应和隔离服务访问故障,防止网络和服务调用故障级联发生,限制故障影响范围,防止故障蔓延导致系统整体性能下降或者雪崩。
3.3 与其他云服务的关系
- 云容器引擎CCE
云容器引擎提供高可靠高性能的企业级容器应用管 理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。用户可以为CCE集群启用服务网格功能,对集群中的服务进行治理。
- 弹性负载均衡ELB
弹性负载均衡将访问流量自动分发到多台云服务器, 扩展应用系统对外的服务能力,实现更高水平的应用容错。用户可以通过弹性负载均衡从外部访问ASM。
3.4 应用场景
a.服务灰度发布
- 适用场景
通常产品优化迭代的方式,直接将某版本上线发布给全部用户,一旦遇到线上事故 (或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。 灰度发布是版本升级平滑过渡的一种方式,当版本升级时,使部分用户使用高版本, 其他用户继续使用低版本,待高版本稳定后,逐步扩大范围把所有用户流量都迁移到高版本上面来。
- 价值
应用服务网格为应用治理提供多种灰度发布功能,在初始灰度的时候可以发现、调整问题,以降低影响度,保证整体系统稳定,高效地推动企业应用的迭代升级。
- 优势
**内置灰度流程:**基于细粒度的分流规则,在ASM中内置了多种典型的灰度发布流程,提供一个灰度发布的向导,方便用户便捷的进行灰度发布实践。在一个服务 版本正常工作,正常处理流量的同时,用户可以创建一个新的灰度版本。当灰度版本启动成功后,引导用户配置灰度规则来切分流量。
**灵活的灰度策略:**灰度规则可以是基于权重的按比例切分流量,也可以根据服务 访问的内容来将特定内容的请求发往灰度版本,对于常用的HTTP协议,如请求中的OS、浏览器、Cookie和Header信息等,在配置了灰度规则后,可以实时的观察 到多个线上版本的运行和访问信息,从而在向导中一键式完成版本选择,将所有 流量都切换到最终选定的版本上。
b.服务流量管理
- 适用场景
流量治理是一个非常宽泛的话题,例如:
①动态修改服务间访问的负载均衡策略,如配置一致性哈希将流量转发到特定的服 务实例上。
②同一个服务有两个版本在线,将一部分流量切到某个版本上。
③对服务进行保护,例如限制并发连接数、限制请求数、隔离故障服务实例等。
④动态修改服务中的内容,或者模拟一个服务运行故障等。
- 价值
在Istio中实现这些服务治理功能时无须修改任何应用的代码。 应用服务网格ASM基于Istio可以为管理的服务提供非侵入的流量治理能力。根据服务的协议,提供策略化、场景化的网络连接管理。在应用拓扑上对选定服务的选定端口,根据需要配置各种不同的治理规则。
- 优势
**重试:**服务访问失败自动重试,从而提高总体访问成功率和质量。支持配置HTTP 请求重试次数、重试超时时间和重试条件。
**超时:**服务访问超时自动处理,快速失败,从而避免资源锁定和请求卡顿。支持 配置HTTP请求超时时间。
**连接池:**通过连接池管理,可以对四层协议配置TCP的最大连接数、连接超时时 间、最大无响应次数、最短空闲时间和健康检查间隔,对七层协议配置HTTP最大 请求数、最大重试次数、最大等待请求数、每连接最大请求数、连接最大空闲时 间,从而防止一个服务的失败级联影响到整个应用。
**熔断:**通过熔断配置实例被驱逐前的连续错误次数、驱逐间隔时长、最小驱逐时间、最大驱逐比例等参数,从而定期考察被访问的服务实例的工作情况,如果连 续出现访问异常,则将服务实例标记为异常并进行隔离,在一段时间内不为其分 配流量。过一段时间后,被隔离的服务实例会再次被解除隔离,尝试处理请求, 如果还不正常,则被隔离更长的时间。从而实现异常服务实例的故障隔离和自动 故障恢复。
**负载均衡:**配置各种负载均衡策略,如随机、轮询、最少连接,还可以配置一致 性哈希将流量转发到特定的服务实例上。
**HTTP头域:**灵活增加、修改和删除指定HTTP头域,包括将HTTP请求转发到目标 服务之前对Headers的操作,以及将HTTP响应回复给客户端前,对Headers的操 作,以非侵入方式管理请求内容。
**故障注入:**通过对选定的服务注入中断故障、延时故障来构造故障场景,无需修 改代码即可进行故障测试。
c.端到端的透明安全
- 适用场景
众所周知,将传统的单体应用拆分为一个个微服务固然带来了各种好处,包括更好的 灵活性、可伸缩性、重用性,但微服务也同样面临着特殊的安全需求,如下所示:
①为了抵御中间人攻击,需要用到流量加密。
②为了提供灵活的服务访问控制,需要用到TLS和细粒度访问策略。
③为了决定哪些人在哪些时间可以做哪些事,需要用到审计工具。
面对这些需求应用服务网格提供全面的安全解决方案,包括身份验证策略,透明的TLS 加密以及授权和审计工具。
- 价值
**默认的安全性:**无需修改即可保证应用程序代码和架构的安全性。
**纵深防御:**与现有的安全系统结合并提供多层防御。
**零信任网络:**在不受信任的网络上构建安全解决方案。
- 优势
**非侵入安全:**应用服务网格是以一种安全基础设施的方式向用户提供透明的安全 能力,让不涉及安全问题的代码安全运行,让不太懂安全的人可以开发和运维安 全的服务,不用修改业务代码就能提供服务访问安全。应用服务网格提供了一个 透明的分布式安全层,并提供了底层安全的通信通道,管理服务通信的认证、授 权和加密,提供Pod到Pod、服务到服务的通信安全。开发人员在这个安全基础设 施层上只需专注于应用程序级别的安全性。
**细粒度授权:**在认证的基础上,就可以进行服务间的访问授权管理,可以控制某 个服务,或者服务的一个特定接口进行授权管理。如只开放给特定的一个 Namespace下的服务,或者开放给某个特定的服务。源服务和目标服务可以在不 同的集群,甚至源服务的不同实例在不同的集群,目标服务的不同实例在不同的集群。
d.传统微服务SDK结合
- 适用场景
①传统SDK开发的服务希望使用服务网格能力。
②希望将Istio与微服务平台集成,并以Istio为基础打造一个微服务管控中心。
- 价值
提供Spring Cloud、Dubbo等传统微服务SDK的集成解决方案,传统的微服务SDK开发 的业务代码无需大的修改,即可方便的迁移到云原生的容器和网格运行环境上来。
- 优势
**无侵入的迁移方案:**对于大量当前使用传统SDK开发的服务,当要使用服务网格 能力时,ASM提供了一套迁移业务无侵入的迁移方案。在服务调用方将Outbound 的流量引流到网格的数据面上来。即短路原有SDK里的服务发现和负载均衡,直 接通过Kubernetes的服务名访问,使用Kubernetes的服务发现,SDK里的治理逻 辑也可逐步的被网格替换。这样服务的运行治理能力都下沉到由Kubernetes和服 务网格提供的基础设施上。统一策略
**管理:**控制面使用ASM统一的控制面做服务发现和治理规则管理,不需 要独立的注册中心和配置中心;数据面的服务发现、负载均衡和各种治理都在 ASM数据面Envoy上执行,SDK作为开发框架,回归到开发框架的本来职能,作为 一个纯净轻量的应用开发框架供用户开发代码。
**多种基础设施:**在方案中,数据面可以是容器,也可以是VM。服务可以是各种语言,本身开发框架也没有限制。统一通过网格的控制面下发流量规则,对所有形 态的数据面进行一致的管理。
4.智能边缘平台IEF
智能边缘平台(Intelligent EdgeFabric)通过纳管边缘节点,提供将云上应用延伸到边缘的能力,联动边缘和云端的数据,满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求,同时,在云端提供统一的边缘节点/应用监控、日志采集等运维能力,为企业提供边、云协同的一体化边缘计算解决方案。
云计算是集中化的,离终端设备(如摄像头、传感器等)较远,对于实时性要求高的计算需求,把计算放在云上会引起网络延时变长、网络拥塞、服务质量下降等问题。 而终端设备通常计算能力不足,无法与云端相比。在此情况下,边缘计算顺应而生, 通过在靠近终端设备的地方建立边缘节点,将云端计算能力延伸到靠近终端设备的边缘节点,从而解决上述问题。
4.1 产品功能
a.边缘节点管理
IEF支持接入海量的边缘节点(EdgeNode),在IEF中可以自动生成边缘节点的配置信息,能够高效、便捷的纳管(安装Edge Agent)边缘节点,所有边缘节点可以在云端统一管理、监控和运维。
b.终端设备管理
支持终端设备连接到边缘节点,终端设备支持通过MQTT协议接入。终端设备接入 后,可以对终端设备进行统一管理。 当前IEF只支持使用MQTT协议在边缘节点和IEF间同步终端设备属性信息,不支持终端 设备连接、终端设备状态管理。
c.边缘应用管理
IEF支持以容器的形式将边缘应用快速部署到边缘节点运行。您可以将自己的边缘应用 程序打包成容器镜像,并上传到容器镜像服务,然后通过IEF将容器镜像部署到边缘节 点运行。并且IEF支持对应用进行版本升级、配置变更、卸载、监控和日志采集。 容器具有更繁荣的生态,能帮助您的容器应用无缝切换到其他的运行环境中,具有更好的可移植性,而且容器具有更好的资源隔离性,并支持CPU/GPU调度。
d.消息路由管理
IEF提供了消息路由功能,用户可以配置消息路由,IEF根据配置的消息路由将边缘消息转发至对应消息端点(Endpoint,发送或接收消息的一方),让消息按照规定的路径转发,灵活控制数据路由,并提高数据安全性。
4.2 实现原理
- 纳管边缘节点,绑定终端设备。 使用IEF构建边缘计算首先需要将边缘节点纳入IEF的管理(通过在边缘节点安装边 缘节点软件),并将终端设备绑定到边缘节点,做完这些后您就可以通过IEF往边 缘节点部署应用。
- 开发应用并制作镜像,上传到容器镜像服务SWR。 这个步骤是针对实际业务场景开发应用,开发完成后制作成容器镜像,并上传到 SWR上,这样后面IEF下发应用后,边缘节点就可以从SWR中拉取应用镜像。 虽然这里将开发应用放在了步骤 1之后,但这两个步骤之间并没有明确的先后顺序,用户也可以先开发应用,然后再纳管边缘节点、绑定设备。
- 部署应用。 边缘节点纳管、应用开发完后,就可以通过IEF将应用部署到边缘节点,运行您的 实际业务。 应用运行后,就能通过AOM对应用进行监控和告警,提供运维便利性。
- (可选)回传数据到云上做进一步处理,根据处理结果更新应用。 这个步骤与IEF的使用本身没有强相关,但是这是一个常见的根据数据改进应用的 方法,您可以根据自身需求选择是否操作。
4.3 关键指标
4.4 基本概念
a.边缘节点
边缘节点(EdgeNode)是用户自己的边缘计算设备,用于运行边缘应用,处理用户的数据,并安全、便捷地和云端应用进行协同。
b.终端设备
终端设备可以小到传感器、控制器,大到智能摄像机或工控机床。终端设备可以连接 到边缘节点。 当前IEF只支持使用MQTT协议在边缘节点和IEF间同步终端设备属性信息,不支持终端设备连接、终端设备状态管理。
c.容器应用
容器应用是您需要在边缘节点上运行的功能模块,通过部署所需应用来构建您自己的 边缘计算能力。
d.消息端点
数据发送的起始点或者数据接收的目的点,如数据从终端设备发送到云端服务,终端 设备为源端点,云端服务为目的端点。
e.消息路由
由源端点,源端点资源,目的端点和目的端点资源组成,系统会根据消息将消息从源 端点指定资源转发到目的端点的指定资源上。
d.证书
证书是作为边缘应用或者终端设备接入边缘节点MQTT Broker的凭证。
4.5 与其他云服务的关系
云服务名称 | 描述 |
---|---|
SWR | 边缘节点从SWR拉取容器镜像。 |
OBS | 用户可以将边缘节点生成的数据上传到OBS存储,从而在云上做进一步处理。 |
AOM | 边缘节点的告警上报至应用运维服务AOM。 |
4.6 应用场景
a.工业视觉
传统的工业制造主要采用人工肉眼检测产品的缺陷,不仅使得检测产品速度慢、效率 低下,而且在检测过程中容易出错,导致误检、漏检等问题。基于机器视觉的质检方 案,通过云端建模分析与边缘实时决策的结合,实现自动视觉检测,提升产品质量。
优势:
-
**高效:**云端已训练的视觉模型,在边缘侧部署,实现产品实时预测,提升检测效 率,提高产品质量
-
**模型最优:**提供边云协同架构,云端模型训练,数据边缘处理,模型增量训练优 化,实现模型最优
-
**统一管控:**智能边缘平台可以实现统一模型下发,节点状态统一监控
b.CDN边缘站点管理
对部署在全国各地的CDN边缘站点进行统一管理,帮助用户实现应用自动化调度,弹 性伸缩以及边缘站点和边缘应用运维。
优势:
-
**弹性伸缩:**可根据用户的业务需求和预设策略,自动调整计算资源,使云服务器 或容器数量自动随业务负载增长而增加,随业务负载降低而减少,保证业务平稳 健康运行。
-
**智能化调度:**提供节点间亲和性调度以及应用间亲和性调度。
-
**立体化运维:**实时监控业务健康状态和边缘节点状态,保障应用稳定运行。
-
**本地自治:**支持边缘节点离线处理,在边缘节点与云中心网络断开后,业务可以正常运行。
5.多云容器平台MCP
多云容器平台(Multi-Cloud Container Platform,MCP)是基于多年容器云领域实践经验和社区先进的集群联邦技术(Karmada),提供的容器多云和混合云的解决方案,提供跨云的多集群统一管理、应用在多集群的统一部署和流量分发,为用户彻底解决多云灾备问题的同时,还可以在业务流量分担、业务与数据分离、开发与生产分离、计算与业务分离等多种场景下发挥价值。
5.1 产品功能
- 统一集群管理
多云容器平台通过集群联邦实现对多个云运营商的集群进行统一管理,支持集群 跨地域统一部署、统一发布及统一运维。
- 全局应用管理
基于多集群与Federation联邦技术,多云容器平台可以实现多个不同区域、不同云的Kubernetes管理,支持统一的全局应用管理,支持基于Kubernetes社区集群联邦标准化接口的跨集群应用的部署、删除、升级等全生命周期管理。
- 跨集群的弹性伸缩能力
多云容器平台支持跨集群的应用弹性伸缩策略,用以均衡各集群的应用实例分布,实现全局负载均衡。用户无需再担心集群节点的水平扩展,多云容器平台将根据应用的负载情况,轻松灵活的自动扩缩容应用所需的资源。
- 跨集群的服务发现能力
多云容器平台支持创建联邦服务,支持跨集群的服务发现机制,能够基于服务就 近访问原则实现业务的区域亲和,从而在业务进行多区域部署时,实现访问与服 务的同地域优先,降低用户访问时的网络延迟。
- 标准兼容
多云容器平台兼容Kubernetes社区最新Federation架构,提供原生Kubernetes API及Karmada API。可使用熟悉的Kubernetes命令行和API来部署容器应用, 无需修改任何服务代码即可支持Kubernetes典型应用场景。
5.2 Karmada
Karmada(Kubernetes Armada)是基于Kubernetes原生API的多集群管理系统。在多云和混合云场景下,Karmada提供可插拔,全自动化管理多集群应用,实现多云集中 管理、高可用性、故障恢复和流量调度。
关键特性
-
基于K8s原生API的跨集群应用管理,用户可以方便快捷地将应用从单集群迁移到多集群。
-
中心式操作和管理Kubernetes集群。
-
跨集群应用可在多集群上自动扩展,故障转移和负载均衡。
-
高级的调度策略:区域,可用区,云提供商。
-
支持创建分发用户自定义(CustomResourceDefinitions)资源。
框架结构
-
**ETCD:**存储Karmada API对象。
-
**Karmada Scheduler:**提供高级的多集群调度策略。
-
Karmada Controller Manager: 包含多个Controller,Controller监听karmada对象并且与成员集群API server进行通信。
基本概念
-
**资源模板(Resource Template):**Karmada使用K8s原生API定义作为资源模板,便于快速对接K8s生态工具链。
-
**分发策略(Propagaion Policy):**Karmada提供独立的策略API,用来配置资源分发策略。
-
**差异化策略(Override Policy):**Karmada提供独立的差异化API,用来配置与集群相关的差异化配置。比如配置不同集群使用不同的镜像。
Karmada资源分发流程图:
5.3 组网方案
多云容器平台提供了混合云、多云、多区域三种类型的组网方案,支持将华为云的云 容器引擎(CCE)集群、其他公有云的Kubernetes集群(如阿里云、腾讯云)和自建 的Kubernetes集群添加到多云容器平台中进行统一管理,详细组网方案如下:
**混合云方案:**是指混合华为云的CCE集群和自建数据中心的Kubernetes集群的场景。 该方案具有如下特点:
-
**云上统一管理:**在云上实现资源、应用、网络等多云统一管理。
-
**云上伸缩应用:**私有云作为固定资源,公有云作为备用资源,当业务出现突发流 量高峰时,实现云上资源的快速扩容。
-
**云上数据无关:**核心数据放在线下,公有云上运行与核心数据无关的应用。
-
**业务迁移过渡:**合理利用原有的物理计算资源,将业务逐步平稳切换到公有云 上,实现资源的最大化利用。
**多云方案:**是指混合华为云的CCE集群与其它云运营商(如阿里云、腾讯云)的 Kubernetes集群。 该方案具有如下特点:
**- 统一管理:**实现资源、应用、网络等多云统一管理。
-
**可扩展性:**比单集群更高的横向扩展性,解决单集群管理容量受限的问题。
-
**智能路由:**多集群分布在不同区域,实现地域亲和的请求转发,降低用户因跨区 域访问造成的网络延迟。
-
**多云容灾:**相同业务部署到不同云运营商的集群,实现多云容灾。
**多区域方案:**混合在相同或不同的虚拟私有云、区域下的CCE集群。 该方案具有如下特点:
-
**统一管理:**实现资源、应用、网络等多云统一管理。
-
**可扩展性:**比单集群更高的横向扩展性,解决单集群管理容量受限的问题。
-
**智能路由:**多集群分布在不同区域,实现地域亲和的请求转发,降低用户因跨区 域访问造成的网络延迟。
-
**多区域容灾:**相同业务部署到不同区域的集群,实现多云容灾。
5.4 基本概念
a.联邦工作负载
联邦工作负载描述跨集群部署的工作负载,可以将配置的工作负载自动部署到所选择的Kubernetes集群。当前仅支持联邦无状态工作负载(FederatedDeployment)、有状态工作负载(StatefulSet)、守护进程集(DaemonSet)。
b.联邦服务
集群中为满足多种复杂场景下工作负载间的互相访问,提供了不同的访问方式,从而 满足不同场景提供不同访问通道。而联邦服务就是在多云场景中,面向联邦层级添加 的服务,用于联邦中不同集群之间工作负载的相互访问。可以在多云容器平台中统一 管理。
c.联邦路由
路由指采用了增强型弹性负载均衡,在四层负载均衡访问方式的基础上支持了URI配 置,通过对应的URI将访问流量分发到对应的服务。而联邦路由指的是在多云场景下的 路由组件,面向联邦层级添加的路由,可以在多云容器平台中统一管理。
d.联邦存储声明
存储声明指集群文件存储、云硬盘、对象存储。联邦存储面对联邦层级,为多个集群同时创建存储卷声明,并且可以为每个集群配置差异化设置。在联邦层级统一管理集群中的存储声明。
e.组件
多云容器中的最小单元,提供一个独立的功能模块/微服务,支持多云场景下的统一的运维。
- 云容器引擎
在多云容器平台中可以添加CCE集群和其他Kubernetes集群,实现多集群统一管理。
- 弹性负载均衡
用户可以通过弹性负载均衡,从外部网络访问容器负载。