OpenYurt v0.3.0 重磅发布:全面提升边缘场景下应用部署效率

本文涉及的产品
函数计算FC,每月15万CU 3个月
应用实时监控服务-用户体验监控,每月100OCU免费额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: OpenYurt 是由阿里云开源的基于原生 Kubernetes 构建的、业内首个对于 Kubernetes 非侵入式的边缘计算项目,目标是扩展 Kubernetes 以无缝支持边缘计算场景。它提供了完整的 Kubernetes API 兼容性;支持所有 Kubernetes 工作负载、服务、运营商、CNI 插件和 CSI 插件;提供良好的节点自治能力,即使边缘节点与云端断网,在边缘节点中运行的应用程序也不会受影响。OpenYurt 可以轻松部署在任何 Kubernetes 集群服务中,让强大的云原生能力扩展到边缘。

头图.png

作者 | 张杰(冰羽)
来源|阿里巴巴云原生公众号

简介

OpenYurt 是由阿里云开源的基于原生 Kubernetes 构建的、业内首个对于 Kubernetes 非侵入式的边缘计算项目,目标是扩展 Kubernetes 以无缝支持边缘计算场景。它提供了完整的 Kubernetes API 兼容性;支持所有 Kubernetes 工作负载、服务、运营商、CNI 插件和 CSI 插件;提供良好的节点自治能力,即使边缘节点与云端断网,在边缘节点中运行的应用程序也不会受影响。OpenYurt 可以轻松部署在任何 Kubernetes 集群服务中,让强大的云原生能力扩展到边缘。

OpenYurt v0.3.0 重磅发布

北京时间 2021 年 1 月 8 号,Openyurt 发布 v0.3.0 版本,首次提出节点池和单元化部署概念,新增云端 Yurt-App-Manager 组件,全面提升在边缘场景下的应用部署效率,降低边缘节点和应用运维的复杂度。全面优化 yurthub、yurt-tunnel 核心组件的性能,yurtctl 提供 kubeadm 的 provider,可以快速方便地将由 kubeadm 创建的 Kubernetes 集群转换成 Openyurt 集群。

1.png

1. Yurt-App-Manger 为边缘应用运维而生

经过与社区同学的广泛讨论,OpenYurt 提供 OpenYurt Yurt-App-Manager 组件。Yurt-App-Manager 是 Kubernetes 的一个标准扩展,它可以配合 Kubernetes 使用,提供 NodePool 和 UnitedDeployment 两种控制器,从主机维度和应用维度来提供边缘场景下节点和应用的运维能力。

1)节点池:NodePool

在边缘场景下,边缘节点通常具备很强的区域性、地域性、或者其他逻辑上的分组特性(比如相同 CPU 架构、同一个运营商、云提供商),不同分组的节点间往往存在网络不互通、资源不共享、资源异构、应用独立等明显的隔离属性,这也是 NodePool 的由来。

NodePool 顾名思义,我们可以称之为节点池、节点组或者节点单元。而对具备共同属性的 woker node 进行管理,传统的做法是用 Label 的方式来对主机进行分类管理,但是随着节点和 Label 数量的增加,对节点主机分类运维(例如:批量设置调度策略、taints 等)效率和灵活性会越来越差,如下图所示:

2.png

NodePool 以节点组的维度对节点划分做了更高维度的抽象,可以从节点池视角对不同边缘区域下的主机进行统一管理和运维,如下图所示:

3.png

2)单元化部署:UnitedDeployment

在边缘场景下,相同的应用可能需要部署在不同地域下的计算节点上,以 Deployment 为例,传统的做法是先将相同地域的计算节点设置相同的 Label,然后创建多个 Deployment,每个 Deployment 通过 nodeSelectors 选定不同的 Label,依次来达到相同的应用部署到不同地域的需求。但是这些代表相同应用的多个 Deployment,除了 name、nodeselectors、replicas 这些特性外,其他的差异化配置非常小。如下图所示:

4.png

但是随着地域分布越来越多,以及不同地域对应用的差异化需求,使得运维变得越来越复杂,具体表现在以下几个方面:

  • 镜像版本升级,需要将每个 Deployment 逐一修改。
  • 需要自定义 Deployment 的命名规范,以此来表明相同的应用。
  • 随着边缘场景越来越复杂,需求增多,每个节点池的 Deployment 会有一些差异化的配置,不好管理。

单元化部署(UnitedDeployment)通过更上层次的抽象,对这些子的 Deployment 进行统一管理: 自动创建/更新/删除。如下图所示:

5.png

UnitedDeployment 控制器可以提供一个模板来定义应用,并通过管理多个 workload 来匹配下面不同的区域。每个 UnitedDeployment 下每个区域的 workload 被称为 pool, 目前 pool 支持使用两种 workload:StatefulSet 和 Deployment。控制器会根据 UnitedDeployment 中 pool 的配置创建子的 workload 资源对象,每个资源对象都有一个期望的 replicas Pod 数量。通过一个 UnitedDeployment 实例就可以自动维护多个 Deployment 或者 Statefulset 资源,同时还能具备 replicas 等的差异化配置。如若获取更直观的操作体验,请查看 Yurt-App-Manager 使用教程开发者教程

更多关于 Yurt-App-Manager 的讨论请参考社区 issue 和 pull request:

2. 节点自治组件 yurt-hub

yurt-hub 是运行在 Kubernetes 集群中每个节点上运行的守护程序,它的作用是作为(Kubelet、Kubeproxy、CNI 插件等)的出站流量的代理。它在边缘节点的本地存储中缓存 Kubernetes 节点守护进程可能访问的所有资源的状态。如果边缘节点离线,则这些守护程序可以帮助节点在重新启动后恢复状态,达到边缘自治的能力。在 v0.3.0 版本中,社区对 yurt-hub 做了大量的功能性增强,主要包括:

  • yurt-hub 链接云端 kube-apiserver 时,自动向 kube-apiserver 申请证书,并支持证书过期自动轮转。

  • 在 watch 云端资源时,增加超时机制。

  • 当本地缓存数据不存在时候,优化 response。

3. 云边运维通道组件 yurt-tunnel

yurt-tunnel 包括云端的 TunnelServer 和每个边缘节点上运行的 TunnelAgent 组成。TunnelServer 通过反向代理与在每个边缘节点中运行的 TunnelAgent 守护进程建立连接,并以此在公共云的控制平面与处于企业内网环境的边缘节点之间建立安全的网络访问。在 v0.3.0 版本中,社区对 yurt-tunnel 组件,在可靠性、稳定性、集成测试方面都做了大量的增强。

4. OpenYurt 运维组件 yurtctl

在 v0.3.0 版本中,yurtctl 支持 kubeadm provider,可以快速方便地将由 kubeadm 创建的原生 Kubernetes 集群转换成能够适应边缘弱网环境的 Kubernetes 集群, 极大提升 OpenYurt 的使用体验。

更多实践操作请关注: 《OpenYurt 入门 - 在树莓派上玩转 OpenYurt

未来计划

OpenYurt V0.3.0 版本发布,进一步提升了原生 Kubernetes 在边缘场景的扩展能力,同时在针对边缘场景下的应用部署的问题发布了 Yurt-App-Manger 组件,后续 OpenYurt 社区会在设备管理、边缘运维调度、社区治理和贡献者体验方面持续投入,再次感谢 Intel/Vmware 的同学参与,同时也非常欢迎有兴趣的同学加入参与共建,共同打造一个稳定,可靠的完全云原生的边缘计算平台。

更多社区详情请关注:https://github.com/alibaba/openyurt

相关链接

如果您对于 OpenYurt 有任何疑问,欢迎使用钉钉搜索群号(31993519)加入钉钉交流群。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
Serverless 云计算 Docker
SAE是全场景Serverless计算平台,深度融合微服务
【5月更文挑战第2天】SAE是全场景Serverless计算平台,深度融合微服务,提供SAE Job任务场景解决方案,具备便捷、节省、稳定、透明和省心的特点。而ECI是Serverless容器运行服务,结合云计算理念,仅需Docker镜像即可运行,支持细粒度资源计费,旨在降低成本和提升效率。SAE侧重应用管理和运营,ECI专注于优化容器资源使用。
73 0
|
6月前
|
机器学习/深度学习 运维 安全
阿里云 ACK One Serverless Argo 助力深势科技构建高效任务平台
阿里云 ACK One Serverless Argo 助力深势科技构建高效任务平台
101482 8
|
6月前
|
运维 Cloud Native 数据可视化
OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地
OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地
|
机器学习/深度学习 存储 人工智能
带你读《云原生架构白皮书2022新版》——vivo AI计算平台的ACK混合云实践
带你读《云原生架构白皮书2022新版》——vivo AI计算平台的ACK混合云实践
271 8
|
运维 Kubernetes Cloud Native
应用纳管和灰度发布:谐云基于 KubeVela 的企业级云原生实践
谐云通过类比事务的方式,将渲染过程分为正向和逆向,同时将首次纳管和真正的纳管动作进行了分离,完成了平台升级的同时,给应用的纳管行为留下了一定的可操作空间。
应用纳管和灰度发布:谐云基于 KubeVela 的企业级云原生实践
|
机器学习/深度学习 存储 人工智能
《云原生架构容器&微服务优秀案例集》——01 互联网——vivo AI 计算平台的 ACK One 混合云实践
《云原生架构容器&微服务优秀案例集》——01 互联网——vivo AI 计算平台的 ACK One 混合云实践
462 0
|
边缘计算 Prometheus 运维
OpenYurt v1.2 新版本深度解读(三):五步搭建一个OpenYurt集群
OpenYurt v1.2 新版本深度解读(三):五步搭建一个OpenYurt集群
OpenYurt v1.2 新版本深度解读(三):五步搭建一个OpenYurt集群
|
Kubernetes 监控 小程序
打破 Serverless 落地边界,阿里云 SAE 发布5大新特性
微服务场景,开源自建真的最快最省最稳的? 复杂性真的会成为 Kubernetes 的“致命伤”吗? 企业应用容器化,一定得过 K8s 这座“独木桥”吗? Serverless 应用场景单一,多用在逻辑简单的非核心场景:小程序、ETL、定时备份等。Java 微服务真的遥遥无期了? 2021云栖大会现场,阿里巴巴研究员、阿里云智能云原生应用平台总经理丁宇(叔同)重磅发布了 Serverless 应用引擎 SAE 的产品全新定位和 5大产品新特性,给出了以上问题的答案。
1023 1
打破 Serverless 落地边界,阿里云 SAE 发布5大新特性
|
Kubernetes Cloud Native 调度
OpenKruise 如何实现 K8s 社区首个规模化镜像预热能力
OpenKruise 是阿里云开源的云原生应用自动化管理套件,也是当前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 项目。它来自阿里巴巴多年来容器化、云原生的技术沉淀,是阿里内部生产环境大规模应用的基于 Kubernetes 之上的标准扩展组件,也是紧贴上游社区标准、适应互联网规模化场景的技术理念与最佳实践。
OpenKruise 如何实现 K8s 社区首个规模化镜像预热能力
|
弹性计算 运维 Kubernetes
打破 Serverless 落地边界,阿里云 SAE 发布 5 大新特性
SAE 的5大新特性、4大最佳实践,打破了 Serverless 落地的边界,让应用容器化更快捷,让 K8s 落地更简单,让容器 + Serverless + PaaS 得以合三为一,使得技术先进性、资源利用率优化、不变的开发运维体验可以融合在一起。
打破 Serverless 落地边界,阿里云 SAE 发布 5 大新特性