Kubernetes:Flomesh 服务网格与多集群通信

Kubernetes 成功普及了容器集群的概念。许多用户已经在多个集群中部署应用,组织需要运行多个 Kubernetes 集群可能来自以下原因(并非详尽列表):

  • • 位置

    • • 延迟(尽可能在靠近客户的地方运行应用程序)

    • • 管辖权(例如,要求将用户数据保存在国内)

    • • 数据引力(例如,数据存在于一个供应商)。

  • • 隔离性

    • • 环境(例如,开发、测试、预发布、生产等)

    • • 性能隔离(团队之间希望互不影响)

    • • 安全隔离(敏感数据或不被信任的代码)

    • • 组织隔离(团队有不同的管理领域)。

    • • 成本隔离(团队希望得到不同的账单)

  • • 可靠性

    • • 爆炸半径(一个集群中的基础设施或应用问题不会使整个系统崩溃)

    • • 基础设施的多样性(底层区域、地区或供应商的故障不会导致整个系统瘫痪)。

    • • 规模(应用程序太大,无法在单个集群中安装)。

    • • 升级范围(为你的应用程序的某些部分升级基础设施,但不是全部;避免需要在原地进行集群升级)。

目前还没有标准的方法来连接甚至考虑超出单一集群边界的 Kubernetes Service,Kubernetes Multicluster SIG 已经提出了提案 KEP-1645[1],以便跨多个集群扩展 Kubernetes Service 概念。

Flomesh[2] 一直在努力解决多集群通信的挑战,将南北向流量管理能力整合到兼容 SMI 的服务网格 osm-edge[3] 中,并回馈社区。

上一篇 Kubernetes 跨集群流量调度实战,我们对 FSM[4] 进行了简单的介绍并演示其使用方法。我们将探索 FSM 多集群支持的动机、目标、架构、组件,以及它如何与成熟的、轻量级的、兼容 SMI 并适用于云和边缘的服务网格 osm-edge[5] 集成。

Flomesh 服务网格

FSM[6] 是来自 Flomesh[7] 的开源产品,用于 Kubernetes 南北向流量、网关 API 控制器和多集群管理。FSM 以可编程代理 Pipy[8] 为核心,提供 Ingress 控制器、Gateway API 控制器、负载均衡器、跨集群服务注册发现等。

动机

在为社区、商业客户和企业提供咨询和支持期间,我们看到了大量需求和期望(有些在文章开头提到的),关于他们为什么要将部署拆分到多个集群中,同时保持在这些集群中运行的工作负载的相互依赖性。目前,集群是一个明显边界,服务对于远端 K8s 消费者来说是不透明的,否则他们可能会使用元数据(例如端点拓扑)来更好地引导流量。用户可能希望使用跨集群分布的服务来支持故障转移或在集群迁移期间提供临时的支持,然而,这都需要当今非常重的定制解决方案。

Flomesh 团队旨在通过为这些问题提供解决方案来帮助社区。

目标

  • • 定义一个最小的 API 来支持跨集群的服务发现和消费。

    • • 使用另一个集群中的服务。

    • • 将部署在多个集群中的服务作为单个服务使用。

  • • 当一个服务被另一个集群消费时,它的行为应该是可预测的,并且与它在集群中的消费方式一致。

  • • 允许在多集群环境中进行灰度发布。

  • • 提供一个独立的实现,可以在不与任何产品和/或解决方案耦合的情况下使用。

  • • 与 osm-edge[9] 服务网格的透明集成,适用于希望通过服务网格功能获得多集群支持的用户。

  • • 完全开源,欢迎社区参与贡献。

架构

  • • 控制平面

843c3e205867d14fa3ec3568d881e284.png
fsm-architecture-cp
  • • osm-edge 集成 (纳管集群)

5b29d2436aee8d53e4f3444bd7c81946.png
fsm-architecture-managed-cluster

FSM 为集群连接器提供了一套 Kubernetes 自定义资源(CRD),并使用 KEP-1645[10] 用于导出和导入服务的 ServiceExport 和 ServiceImport API。

FSM 多集群支持已经处于 alpha 阶段,欢迎从 FSM Github[11] 下载尝试。

对 FSM 多集群方案感兴趣的小伙伴,也可以关注我们在 12 月 17 日中国 DevOps 社区峰会武汉站上关于《云时代的多集群流量调度》的分享,届时会多对方案进行深度的介绍。

f8ad39927a37236cc5c8d8a047d8e10d.png

总结

Kubernetes 不再局限于单一边界,拥有多个 Kubernetes 集群的场景变得非常普遍,且没有一种典型或标准的方式来连接多集群并提供透明的方式来跨边界访问服务。Kubernetes Multicluster SIG 正在研究提案,以提供一组可以由供应商实现的通用 API,并为 k8s 用户提供一致的方式来访问内部或外集群的服务。

在后续的文章中,我们会进一步介绍 FSM 更多场景的使用,以及 FSM 能力的黑魔法。

引用链接

[1] KEP-1645: https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api
[2] Flomesh: https://flomesh.io
[3] osm-edge: https://flomesh.io/osm-edge
[4] FSM: https://github.com/flomesh-io/fsm
[5] osm-edge: https://flomesh.io/osm-edge
[6] FSM: https://github.com/flomesh-io/fsm
[7] Flomesh: https://flomesh.io
[8] Pipy: https://flomesh.io
[9] osm-edge: https://flomesh.io/osm-edge
[10] KEP-1645: https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api
[11] FSM Github: https://github.com/flomesh-io/fsm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java四种线程池的使用

FixedThreadPool 由Executors的newFixedThreadPool方法创建。它是一种线程数量固定的线程池,当线程处于空闲状态时,他们并不会被回收,除非线程池被关闭。当所有的线程都处于活动状态时,新的任务都会处于等待状态,直到有…

袁永福软件行业从业经历

简化版》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 袁永福简历 袁永福,男,1980年生于江西省九江市都昌县,2001年南京东南大学动力工程系本科毕业。毕业后一直从事计算机软件开发工作&…

小程序之地图导航

同学们平常使用地图的时候应该都有注意到,当我们在一个应用中选择一个地址,打开一个地图,往往会有两种显示方式,一个是显示当前自己的位置;一个是显示对方,也就是目的地的位置;如下图&#xff1…

PS2019摄影后期处理(一)

高高手之路笔记 一、学习方法 内外兼修:技术会淘汰、更新,自己内在也要提高。 二、照片格式、色彩空间 JPEG TIFF RAW sRGB:互联网相关图片,电子设备 三、照片风格 自己定义照片格式,直接后期效果 相机自带工具&a…

mdnsresponder_什么是mDNSResponder.exe / Bonjour,如何卸载或删除它?

mdnsresponderYou are no doubt reading this article because you’ve noticed the mDNSResponder.exe process running in Task Manager, you don’t remember installing it, and it doesn’t show up in the Add/Remove programs in Control Panel. So what is it, and how…

Windows 10下,如何使用PowerShell批量重启局域网电脑

PowerShell 在Windows 10中越来越受到微软重视,甚至被微软安排在开始按钮超级菜单中替换了一直以来默认的命令提示符(当然还可以换回去),这和该工具越来越强大密不可分。这次就介绍一个“群重启”命令,可让局域网内的电脑集体重启。1、单机重…

.NET MAUI学习指南

由于.NET MAUI这项技术出来不久相关的学习资源暂时除了官网以外没有太好的学习资源,这篇文章主要向大家分享几种学习.NET MAUI的学习途径,如果有好的学习资源欢迎大家私信给我然后更新到后续的文章里。(以下推荐学习途径均为免费且无广告的资…

循序渐进DB2(第2版)——DBA系统管理、运维与应用案例

《循序渐进DB2(第2版)——DBA系统管理、运维与应用案例》基本信息作者: 牛新庄出版社:清华大学出版社ISBN:9787302323013上架时间:2013-7-3出版日期:2013 年7月开本:16开页码:612版次&#xff1…

Oracle Unicode转中文(解码)

Oracle Unicode转中文(解码) CreateTime--2018年3月29日15:23:30 Author:Marydon 情景描述: 将数据库中的某个字段误存储的是Unicode编码,需要将其改成中文。 测试: --将Unicode转中文 select unistr(REPLACE(\u6d4b\u…

PS2019摄影后期处理(二)

一、曲线 二、曲线与通道 三、HSL局部调整 色相、饱和度、亮度 a.色相:一个颜色,帽子是红色 b.饱和度:树木葱郁一点 c.饱和度:衣服连杆 便黑白: 1.调低所有饱和度 2.将某个颜色饱和度提高,再转灰度。…

管理员获得所有权_在Windows 7中获得注册表项的所有权

管理员获得所有权We have previously written about how to take ownership of files and folders in Windows 7, but there may be times when you need to take ownership of or assign full permission for certain registry keys. This article shows you how to do this. …

Dojo QuickStart 快速入门教程 (2) 基本框架

下载库 首先,下载 Dojo 库:http://www.dojotoolkit.org/downloads 放了方便测试,我将文件将解压到 Web Server 的 "js/dojotoolkit" 文件夹中,如果你愿意,也可以缀上版本号。最后的目录结构应该像下图这样&a…

摊牌了,.NET开发者,准备赋能未来

hi,这里是桑小榆。一名.net开发,从19年毕业至今一直从事相关技术已近4年。发展至今,很有必要分享分享我的经历以及对于.net开发的看法和见解。篇幅有些长,无论你是学生,职业人,.NET开发者还是其他语言开发者…

网络爬虫练习

1.利用requests.get(url)获取网页页面的html文件 import requests newsurlhttp://news.gzcc.cn/html/xiaoyuanxinwen/ res requests.get(newsurl) #返回response对象 res.encodingutf-8 print(res.text) 2.利用BeautifulSoup的HTML解析器,生成结构树 import reques…

BZOJ 3434 时空穿梭

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id3434 题意: 思路: const int mod10007; const int N100005;int g[22][N]; int C[N][22],mou[N]; int h[22][N][13];int prime[N],cnt; int tag[N];void init() {int i,j;mou[1]1;f…

powershell /遍历/psobject/字符串转换Json/json数组操作

读取json文档 $json (Get-Content "C:\HDDList.json" -Raw) | ConvertFrom-Json $select$json.Content.selected[0] $HddCoun$json.Content.normal.Count 遍历数组 foreach($str in $json.versions) { echo "value: $str" } json数据转换psobject.pro…

plex实现流媒体服务器_如何从Plex Media Server离线查看下载和同步媒体

plex实现流媒体服务器Streaming content from your Plex Media Server is great, but sometimes—like when you’re going to be offline or stuck with cruddy internet speeds while traveling—there’s no substitution for having a copy of the media stored on your de…

.NET Conf 2022 大会日程全曝光!!前沿、硬核、创意.....精彩就等你来!!

倒计时2天一场规模宏大,内容硬核,大咖齐聚的.NET 领域年度最大的盛会即将开幕.NET Conf 2022 12月3日-12月4日开源 安全 赋能诚邀您的加入立即扫码预约加入.NET年度盛宴!!.NET Conf China 2022.NET Conf China 2022是面向开发人员…

SpringMVC 数据的格式化、JSR 303数据校验和国际化

SpringMVC 数据的格式化、JSR 303数据校验和国际化转载于:https://www.cnblogs.com/lusufei/p/7400963.html

C# 对程序窗口进程和进程ID

获取当前激活窗口(顶置) GetForegroundWindow() [DllImport("user32.dll")]public static extern IntPtr GetForegroundWindow();[DllImport("user32.dll", EntryPoint "GetWindowText")]public static extern int GetW…