一、背景介绍

多集群架构下,不同 Kubernetes 集群间的服务如何互通是核心挑战。Karmada 支持 Kubernetes Multi‑cluster Service APIs(MCS),通过 ServiceExportServiceImport 实现跨集群服务发现与调用,帮助多集群服务统一管理和访问。安装和部署可以参考此链接。

二、关键资源与概念

资源类型作用描述创建位置
ServiceExport声明某服务要被跨集群导出控制面集群 (Host)
ServiceImport表示控制面集群导入该服务,实现跨集群访问控制面集群 (Host)
PropagationPolicy用于跨集群传播资源控制面集群 (Host)

三、ServiceExport 和 ServiceImport 的使用场景

3.1 ServiceExport 使用场景

  • 服务提供方向外共享服务时使用
    某个成员集群中有服务需要暴露给其他集群访问时,需在该成员集群创建对应的 ServiceExport 资源。
  • 标识“这是一个跨集群共享的服务”,Karmada 根据此资源在控制面集群生成对应的 ServiceImport,并同步给需要访问的集群。
  • 典型场景:多活架构中,各集群运行不同服务副本,需统一暴露给消费者集群。

3.2 ServiceImport 使用场景

  • 服务消费方集群创建,代表该集群“导入”了某个跨集群服务,形成本地访问入口。
  • 通过 ServiceImport,目标集群会自动创建与原服务对应的“派生服务”(Derived Service),Pod 可直接访问。
  • 典型场景:需要访问其他集群服务的集群,为服务调用端提供访问接口。

四、环境准备

  • Karmada 已安装并运行,控制面集群和多个成员集群已加入;
  • 集群网络环境已经打通;
  • 各集群 Pod 和 Service CIDR 不冲突,网络连通;
  • 已安装 ServiceExportServiceImport CRD,并通过 PropagationPolicy 同步到成员集群。

五、操作流程

1. 在成员集群部署服务

例如,在成员集群 Member1 中部署示例应用:

apiVersion: apps/v1
kind: Deployment
metadata:name: serve
spec:replicas: 1selector:matchLabels:app: servetemplate:metadata:labels:app: servespec:containers:- name: serveimage: jeremyot/serve:0a40de8args:- "--message='hello from cluster member1 (Node: {{env \"NODE_NAME\"}} Pod: {{env \"POD_NAME\"}} Address: {{addr}})'"env:- name: NODE_NAMEvalueFrom:fieldRef:fieldPath: spec.nodeName- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name
---      
apiVersion: v1
kind: Service
metadata:name: serve
spec:ports:- port: 80targetPort: 8080selector:app: serve
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:name: mcs-workload
spec:resourceSelectors:- apiVersion: apps/v1kind: Deploymentname: serve- apiVersion: v1kind: Servicename: serveplacement:clusterAffinity:clusterNames:- member1

部署完成后,确保 Service 和 Deployment 运行正常。

2. 创建 ServiceExport

在控制面集群创建 ServiceExport,声明将 serve 服务导出:

apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceExport
metadata:name: serve
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:name: serve-export-policy
spec:resourceSelectors:- apiVersion: multicluster.x-k8s.io/v1alpha1kind: ServiceExportname: serveplacement:clusterAffinity:clusterNames:- member1

通过 PropagationPolicy,将该 ServiceExport 资源传播到 Member1。

3. 创建 ServiceImport 并传播到目标成员集群

在控制面集群创建对应的 ServiceImport,表示该服务已被导入:

apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceImport
metadata:name: serve
spec:type: ClusterSetIPports:- port: 80protocol: TCP
---
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:name: serve-import-policy
spec:resourceSelectors:- apiVersion: multicluster.x-k8s.io/v1alpha1kind: ServiceImportname: serveplacement:clusterAffinity:clusterNames:- member2

再用 PropagationPolicy 将 ServiceImport 传播到目标成员集群 Member2。

4. 访问跨集群服务

在 Member2 集群中,Pod 可以访问导入的服务,示例命令:

kubectl --context member2 exec -it <pod-name> -- curl <derived-service-cluster-ip>:80

这表示 Member2 集群中的 Pod 能通过 ServiceImport 自动创建的服务访问 Member1 的应用,实现跨集群服务调用。

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

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

相关文章

macOS 26正式发布,全新Liquid Glass设计语言亮相

在全球科技爱好者翘首以盼的WWDC 2025开发者大会上&#xff0c;苹果公司正式揭开了macOS 26系统的神秘面纱。此次系统更新最令人瞩目的&#xff0c;当属其采用的全新Liquid Glass设计语言&#xff0c;该设计不仅重塑了Mac的视觉风格&#xff0c;更为用户带来了一场前所未有的操…

网络基础(3)

网络基础&#xff08;3&#xff09; 有关进程 1&#xff09;进程是人在系统中的代表&#xff0c;只要把数据给进程&#xff0c;人就相当于拿到了数据 2&#xff09;数据传输到主机不是目的&#xff0c;而是手段。到达主机内部&#xff0c;再交给主机内的进程才是目的 上网的…

C语言专题:17.逻辑运算与三目运算符(按位逻辑运算、条件运算符)

​ C语言中的逻辑运算符和三目运算符&#xff08;条件运算符&#xff09;是非常常见且基础的操作符&#xff0c;它们分别用于布尔逻辑运算和简化条件判断的表达式。通过合理使用这些运算符&#xff0c;可以使代码更加简洁、清晰。本文将重点介绍逻辑运算符、三目运算符和按位逻…

【分布式 ID】一文详解美团 Leaf

文章目录 1. 前言2. 项目启动示例 - MYSQL 和 Zookeepr2.1 Leaf-segment 模式2.2 Leaf-snowflake 模式 - 单节点2.3 Leaf-snowflake 模式 - 多节点 3. Leaf-segment 详细讲解4. Leaf-segment 源码解析4.1 SegmentBuffer 号段缓存4.2 Segment 号段4.3 初始化号段服务 SegmentIDG…

互联网大厂Java面试实录:Spring Boot与微服务在电商场景中的应用

互联网大厂Java面试实录&#xff1a;Spring Boot与微服务在电商场景中的应用 面试场景 面试官&#xff1a;你好&#xff0c;谢飞机&#xff0c;欢迎参加我们的Java开发岗位面试。首先&#xff0c;能否简单介绍一下你的技术背景&#xff1f; 谢飞机&#xff1a;嗨&#xff0c…

XILINX Ultrascale+ Kintex系列FPGA的架构

Xilinx&#xff08;现为AMD&#xff09;Kintex UltraScale系列FPGA是基于16nm FinFET工艺的高性能、中等成本的现场可编程门阵列&#xff0c;专为高带宽、低功耗和成本效益的应用设计&#xff0c;广泛用于5G通信、数据中心、视频处理、航空航天等领域。以下详细介绍Kintex Ultr…

腾讯云实名资质 “待补充后提交” 解决方法

目录 一、引言二、为什么会出现 “待补充后提交” 状态三、需要补充的具体材料3.1 营业执照3.2 法人身份证相关3.3 短信管理员资料3.4 合规使用承诺函 四、处理流程详细步骤4.1 登录腾讯云控制台4.2 进入实名资质相关页面4.3 上传补充材料4.4 提交审核 五、注意事项5.1 材料规范…

8分钟讲完 Tomcat架构及工作原理

https://www.bilibili.com/video/BV1J3411k7Xc/?spm_id_from333.337.search-card.all.click&vd_source36145f3620bdf21c0f1a843352e603fb JavaWeb开发必看&#xff01;Tomcat架构及工作原理&#xff08;8分钟&#xff09; 分阐明了Tomcat的工作原理。 一、Tomcat的核心架…

C盘爆满元凶!WinSxS组件解密

C盘爆满元凶!WinSxS组件解密 WinSxS是什么?核心功能与重要性目录为何疯狂膨胀?安全清理权威指南优先使用微软官方工具:DISM工具清理效果与性能影响重要风险提示总结C盘爆满元凶!WinSxS组件解密你是否也遇到过: C盘空间频频告急,检查发现WinSxS文件夹竟独占数十GB空间?想…

毕业设计(启智模块化机器人的组装与K5的使用

记录一下 毕业设计的部分笔记 准备清空文件发到csdn做一个纪念0.0 物联网毕业设计 机器的组装与K5的使用 基础文件的学习 首先安装K5 和文件包中的JLink驱动 并且文件实例里的代码必须加上x后缀否则 只能用K4 来打开 供电&#xff1a;整个系统都需要电池运转 build 存放…

从0开始学习R语言--Day37--CMH检验

对于有多个特征的数据&#xff0c;我们一般的处理方式是构建特征函数&#xff0c;计算每个特征向量的系数&#xff0c;从而将其影响纳入到研究量中&#xff0c;但对于简单的问题&#xff0c;也这样做的话未免有点小题大做。这时我们可以考虑用CMH来分析变量在每个特征下的影响&…

搜索选择DFS还是BFS

1. DFS&#xff08;深度优先搜索&#xff09;&#xff1a;优先进行深度纵向搜索&#xff0c;DFS所需的内存少于BFS所需的内存&#xff0c;利用堆栈实现&#xff0c;适合找最短路径。 2. BFS&#xff08;广度优先搜索&#xff09;&#xff1a;优先进行广度横向搜索&#xff0c;…

三格电子——电力协议转换器

Modbus 转 IE104 网关型号 SG-TCP-IEC104 &#xff0c;是三格电子推出的工业级网关&#xff08;以下简称网 关&#xff09;&#xff0c;主要用于 Modbus RTU/TCP/ASCII 数据采集、 DLT645-1997/2007 数据采集&#xff0c;可接多功 能电力仪表、温控仪、电表等&#xf…

UE5 瞄准偏移(AimOffset)功能详解

什么是AimOffset? AimOffset(瞄准偏移)是一种特殊的动画混合空间(类似于 Blend Space),它通过将多个预设姿势叠加到一个基础动作上,实现角色根据视角方向进行上下左右的动画混合。简单来说,AimOffset 在射击游戏中常用来处理角色持枪瞄准时的动作,比如抬头、低头、左…

在Ubuntu24上安装ollama

安装ollama之前&#xff0c;建议检查显卡驱动是否安装完成。如果还未安装显卡驱动&#xff0c;建议先安装显卡驱动再安装ollama。 安装curl sudo apt update sudo apt -y install curl进入ollama的下载网站 https://ollama.com/download/linux 复制安装脚本&#xff0c;并在…

【Kafka使用方式以及原理】

Kafka生产者发送消息的方式 Kafka生产者发送消息主要通过以下三种方式&#xff1a; 同步发送 生产者发送消息后&#xff0c;会阻塞等待Broker的响应&#xff0c;确认消息是否成功写入。这种方式可靠性高&#xff0c;但吞吐量较低。代码示例&#xff1a; ProducerRecord<S…

【ChatTTS】ChatTTS使用体验

ChatTTS 使用体验&#xff1a;初始使用真的十分惊艳。可以尝试官网调用试一试。部署的好处是&#xff0c;遇到好听的音色可以把参数自动存储在本地。 苦恼&#xff1a;相同参数生成的音色不一致&#xff0c;需要多次调整&#xff0c;但最终效果非常满意。 ⭐ GitHub Star数变化…

华为云Flexus+DeepSeek征文| 基于华为云Dify-LLM高可用平台开发运维故障处理智能体

华为云FlexusDeepSeek征文&#xff5c; 基于华为云Dify-LLM高可用平台开发运维故障处理智能体 1. 概述2. 创建工作流2.1. 创建开始节点2.2. 创建搜索节点2.3. 创建LLM大模型节点2.4. 创建结束节点 3. 测试工作流4. 应用发布5. 总结 1. 概述 Dify是一款开源的LLM应用开发平台&am…

vue中scss下载方式与引入方式

1. scss下载 npm install sass-loader --save-devnpm install node-sass --save-dev 2. 在style标签里面加入lang“scss” 测试下&#xff01;

Day04_C语言IO进程线程

01.思维导图 02.创建一个分支线程&#xff0c;在主线程中拷贝文件的前一部分&#xff0c;主线程拷贝文件的后一部分 #include <25051head.h> void* callback(void *arg) {off_t size*(off_t*)arg;//打开一个文件读//打开一个文件写int fd_r2open("./my.txt",O_…