QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

华为云的 Kubernetes 实践之路

  • 2018-03-28
  • 本文字数:3153 字

    阅读完需:约 10 分钟

华为与 Kubernetes 的渊源颇深,早在 Kubernetes 刚开源的时候就以社区创始成员及白金会员的身份加入其中。目前拥有 1 个 Steering Committee 席位和 5 个 Maintainer 席位。

1.1 华为自身基于 Kubernetes的实践

加入初期,作为全球最大的电信设备制造商之一,华为内部 IT 运维着遍布全球的八个数据中心,在 100K + VM 中运行 800 多个应用程序,使用虚拟机封装应用程序,但每次启动虚拟机都花费了大量的时间,这给管理及部署基于虚机应用程序的高成本和低效率带来了严峻的挑战。因此华为决定利用 Kubenetes 技术对自身 IT 系统进行容器化改造。

与此同时,华为通过参与和贡献 Kubernetes 项目,为自身带来了在规划、网络、多集群联合、应用支持、安全、可扩展性和政策执行等方面的良好设计、代码和文档管理,以及在服务治理方面的收益。通过自身的容器化改造实践,在受益的同时又将自身遇到的实际问题不断的贡献给社区,与社区成员一同推动 Kubernetes 的发展。

比如,在华为内部 IT 系统的实践历程中,业务的全球化属性给平台带来了混合云、跨地域、多 DC 部署方面的需求,这与社区发展多集群联邦的理念不谋而合。因此,华为在集群联邦项目成立之初就积极参与其中,主导了架构设计以及联邦级别的无状态应用、短任务支持、集群间策略调度、应用跨集群自动伸缩等关键特性开发。目前集群联邦已在社区正式孵化为独立子项目。

另一个例子是早期的 K8S 并不支持亲和反亲和等高级调度策略,使得大型传统应用改造上云十分困难。在华为公司对应用做微服务拆分和容器化改造的过程中,最典型的问题就是拆分后的组件间如何高效地通信。在传统方案中,往往有多个组件的业务进程部署在同个虚机上,组件间交互可以通过进程间通信来实现。应用改造后,组件变成了 k8S 中的 Pod,被相对独立地调度和拉起,通过容器网络互相通信。当一个复杂应用的各个组件十分分散时,网络通信的时延会大幅增加。一方面,针对这个问题,华为在 k8S 社区的主导实现了节点亲和反亲和调度、应用间亲和反亲和调度、Taints tolerations 等高级调度机制。通过给 Pod 配置高级调度策略干预应用组件的分布,配合容器网络在路由策略上的优化,访问时延问题得到了显著的改善。

另一方面,在集群规模和性能方面,华为也做了很多探索与实践。面对大规模场景下海量 Service 的管理性能问题,华为设计实现并向社区贡献了使用 IPVS 管理 service 路由规则的方案,将 k8S 对 service 的管理规模从上千提升到了数万的级别。

1.2 华为云应用服务与 Kubernetes

华为云应用服务产品均围绕着“容器”为中心构建,致力于帮助客户容器化的应用在云上高效地开发、交付与运维,并保障应用运行时的高性能、高可靠、高弹性。目前,华为云应用服务产品以基于 K8S 的华为云容器引擎(CCE)为核心,协同补齐了完整的应用开发、交付与运维流程,为客户提供完整的一站式云上应用生命周期管理方案。

华为云应用服务大体上可以分为三大类:

第一类围绕着 Kubernetes 核心功能,也就是容器编排与调度,与下层的基础设施层包括计算、网络、存储,以及水平的权限控制、网络防护、镜像仓库等服务进行整合形成一个容器化基础设施平台,并向上对接到集群管理、多 DC/AZ、多区域管理实现云上的水平弹性。

通常大家所提到的“容器服务”或“容器云”大部分都是指这一类服务。华为云所提供的云容器引擎(CCE)、云容器实例(CCI)归属于此类。两者均基于 Kubernetes 构建,但技术路线偏重点有所区分。

CCE 的服务形态是用户专属的 Kubernetes 集群(Kubernetes as a Service),用户能够控制整个 Kubernetes 集群的资源与应用,并且可以调用完整的 Kubernetes API,以及安装各类 Addon 以及自定义扩展比如调度器、工作负载控制器等;而 CCI 的服务形态是无服务器容器(Serverless Container),用户无需感知 Kubernetes 集群,通常只需要调用 Kubernetes Workload API 进行应用的管理即可,而把资源全部交由华为云进行自动调度与管理。

因此,通常 CCE 适合业务半托管的场景,即用户自身有一定运维能力,且业务场景需要用户手动做一些管控比如资源规划、弹性伸缩,甚至自定义一些平台特性以适配业务;相对而言 CCI 适合业务全托管的场景,即用户只需关注以容器形态所交付的应用本身,无需关注资源管控,甚至无需关注 Kubernetes 的相关原理。

第二类服务围绕着 Kubernetes 标准化接口以及结合具体场景的最佳实践来构建完整的应用开发、交付与运维流程,实现云上的应用全生命周期管理。

华为云在开发阶段提供微服务开发框架帮助用户在产品开发中落地微服务架构实践,在交付阶段提供“从代码到容器镜像”的自动镜像构建服务,支持一键式部署到 Kubernetes 平台之上,实现持续交付,而最终业务上线运行之后的运维阶段除了基础的容器监控、日志、告警系统之外,同时提供了微服务治理引擎,以及应用性能管理用于故障在线辅助与自动定位。

具体举例而言:

  • 华为云微服务引擎(CSE)提供了具备升降级、容错、熔断等完整服务治理能力的微服务框架,兼容 Spring Cloud、Dubbo 等开源接口,并与 CCE 深度整合,支持 ServiceMesh,未来计划进一步与 CNCF 基金会各微服务相关项目,尤其是 Istio 生态相结合,提供最适合在 K8S 之上运行业务所使用的微服务开发框架
  • 华为云应用编排服务(AOS)提供了以应用为中心的高层编排引擎,能够将 K8S 上运行的各种工作负载、各类资源对象整合管理,并提供了完善的版本与生命周期管理机制,便于客户以更高层的“应用”为对象进行日常交付与运维管理
  • 华为云应用性能管理(APM)提供了丰富的各类运维工具,除了基础的监控、日志与告警,进一步面向故障定位与分析场景提供了应用全局性能拓扑展示与调用链跟踪等高级特性,使得运维人员能够及时了解应用健康状态并进行相关处理。

第三类则是直接在 Kubernetes 之上身体力行地构建一些典型服务化应用,针对某些业务场景提供更易用、更高效的服务,使得客户更聚焦自身业务逻辑。

比如:

  • 以分布式数据库(DDM)、分布式缓存(DCS)、分布式消息(DMS)为代表的云化中间件服务,供应用业务逻辑所调用,辅助客户应用的容器化、无状态化、微服务化开发或改造;
  • 以 CCE/CCI 为基础设施层所构建的 Serverless Computing(FunctionStage)服务,面向 Event-Driven 的典型业务流场景简化应用代码逻辑,并基于容器热启动、各类主流语言运行时的快速启停优化,实现更高效、更低成本的实时计算;
  • 区块链服务 BCS 则提供了主流的 Hyperledger 开源框架,并基于 Kubernetes 的高性能实现 3 分钟一键上链,2000+TPS 的并发区块处理能力,可满足联盟链与私有链的各类业务场景诉求,使客户免运维地使用区块链构建自有业务框架。

1.3 未来:紧随社区版本 持续优势创新

纵观华为在 Kubernetes 上的创新可以总结为优势创新、场景创新、技术创新三个层面,优势创新是围绕华为固有的自身强势领域如网络、硬件进行与容器技术的结合运用。场景创新则是聚焦在不同领域的客户需求如游戏、电商、AI 等,基于客户的计算需求进行解决方案的适配。技术创新,以无服务器容器为例,在 Serverless 的云服务趋势下,华为云提供更加便捷,更加全新理念的容器服务方式。

目前看来,容器服务并没有统一的服务标准,并没有说哪一种创新可以一招解决所有企业云上容器化的痛点,这需要根据客户的业务场景进行量身匹配,而华为云的全栈容器服务的实践案例也充分说明了这一点。众多不同的容器服务在上线不久已应用在众多不同领域,裸金属容器已成功运用在一部分游戏客户中,帮助其进行测试环境,及高峰时间的流量应对。Windows 容器成功运用在传统 IT 系统的容器化改造,而无服务器容器则可以帮助更多缺乏 Kubernetes 技术投入的公司快速上手享受容器化带来的益处。

这也就是华为云对于 Kubernetes 的一些探索和思考,未来还会有更多基于容器的创新,一切才刚刚开始。

2018-03-28 18:053303
用户头像

发布了 30 篇内容, 共 47090 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

WordPress 使用 TiDB Cloud 替换 MySQL

TiDB 社区干货传送门

迁移 实践案例 版本测评 应用适配

国内外主流的8款 IT 项目管理平台

爱吃小舅的鱼

项目管理工具 PingCode 项目研发管理软件

CSS奇思妙想之-利用CSS裁剪(clip-path)完成各种图形

肥晨

三周年连更

Viu联合华为HMS生态,共创影音娱乐新体验

HarmonyOS SDK

HMS Core

python正则 | python小知识

AIWeker

Python python小知识 三周年连更

Parallels Desktop PD 18虚拟机关闭、停止、中止和暂停操作的区别

理理

pd虚拟机 Parallels Desktop PD18虚拟机操作

物联网常见协议之Amqp协议及使用场景解析

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 4 月 PK 榜

保险行业如何将质检覆盖率从5%提升至100%?

中关村科金

保险 智能质检

maya软件在建模上有什么优势?

Finovy Cloud

maya 3D软件

超强版干货投递!Milvus 的部署心得、运维秘籍都在这里了!

Zilliz

Milvus Zilliz ChatGPT LLM zillizcloud

微服务 - 注册中心和配置中心(Consul)

做梦都在改BUG

Java 微服务 注册中心 配置中心

PCB阻焊桥存在的DFM(可制造性)问题,华秋一文告诉你

华秋电子

免费领取 | ONES 联合中国信通院发布《中国企业软件研发管理白皮书》

万事ONES

多元融合成为音视频技术发展新风向

中关村科金

实时音视频 监管合规

谷歌 Chrome 正式发布 WebGPU!Orillusion开源倒计时!

Orillusion

开源 WebGL 元宇宙 web3d #WebGPU

【Linux】之创建普通用户并禁止root用户远程登陆

A-刘晨阳

Linux 三周年连更 用户名

4 月 25 日直播预告 | 深入解读 Flink 1.17

Apache Flink

大数据 flink 实时计算

从零到跑通TPC-H:如何快速实现查询计划

MatrixOrigin

分布式数据库 MatrixOrigin MatrixOne TPC-H

Neuron 2.4.0发布:体验下一代工业物联网连接和管理

EMQ映云科技

UI 物联网 IoT neuron 企业号 4 月 PK 榜

面试官:Redis有什么持久化策略?

做梦都在改BUG

Java redis 缓存 面试 持久化

即时通讯系统为什么选择GaussDB(for Redis)?

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

云上数据变革:Databend Cloud 正式发布

Databend

Mac人工智能图像降噪 Topaz Photo AI 安装激活教程

理理

Topaz Photo AI下载 图像降噪 苹果mac软件下载 Topaz Photo AI mac Topaz Photo AI破解

即时通讯技术文集(第13期):Web端即时通讯技术精华合集 [共15篇]

JackJiang

网络编程 即时通讯 IM

OneNote 2019 for Mac 中文版附激活工具

真大的脸盆

Mac Mac 软件 笔记应用

阿里大牛纯手写的微服务入门笔记,从基础到进阶直接封神

做梦都在改BUG

Java 微服务 spring cloud alibaba

AIGC的阿克琉斯之踵

华为云开发者联盟

人工智能 AI 华为云 华为云开发者联盟 企业号 4 月 PK 榜

GitHub星标48k!蚂蚁金服开源的这份SpringBoot笔记

做梦都在改BUG

Java spring Spring Boot 框架

景区共享电单车如何投放?投放意义?

共享电单车厂家

共享电动车厂家 景区共享电单车 共享电单车投放

华为云的Kubernetes实践之路_语言 & 开发_华为_InfoQ精选文章