KubeVela v1.3 多集群初体验,轻松管理应用分发和差异化配置

简介:KubeVela v1.3 在之前的多集群功能上进行了迭代,本文将为你揭示,如何使用 KubeVela 进行多集群应用的部署与管理,实现以上的业务需求。

作者:段威(段少)

在当今的多集群业务场景下,我们经常遇到的需求有:分发到多个指定集群、按业务规划实现分组分发、以及对多集群进行差异化配置等等。

KubeVela v1.3 在之前的多集群功能上进行了迭代,本文将为你揭示,如何使用 KubeVela 进行多集群应用的部署与管理,实现以上的业务需求。

开始之前

1. 准备一个 Kubernetes 集群作为 KubeVela 的控制平面。

2. 确保 KubeVela v1.3[1] 和 KubeVela CLI v1.3.0 已经安装成功。

3. 你要管理的子集群列表 kubeconfig。我们将以 beijing-1,beijing-2 和 us-west-1 这 3 个集群为例。

4. 下载并结合 multi-cluster-demo[2] 来更好的理解,如何使用 KubeVela 多集群能力。

分发到多个指定集群

对多个指定集群进行分发是最基本的多集群管理操作。在 KubeVela 中,你将使用一个叫做 topology 的应用策略来实现它。集群以数组的形式,列在其属性的 clusters 字段里。

首先让我们确保切换 KUBECONFIG 到准备好的管控集群,使用 vela cluster join 将  beijing-1,beijing-2 和 us-west-1 这 3 个集群全部纳管进来:

➜   vela cluster join beijing-1.kubeconfig --name beijing-1
➜   vela cluster join beijing-2.kubeconfig --name beijing-2
➜   vela cluster join us-west-1.kubeconfig --name us-west-1
➜   vela cluster list
CLUSTER          TYPE             ENDPOINT                   ACCEPTED  LABELS
beijing-1        X509Certificate  https://47.95.22.71:6443   true
beijing-2        X509Certificate  https://47.93.117.83:6443  true
us-west-1        X509Certificate  https://47.88.31.118:6443  true

接着打开 multi-cluster-demo,查看 basic.yaml:

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:name: example-appnamespace: default
spec:components:- name: hello-world-servertype: webserviceproperties:image: crccheck/hello-worldport: 8000traits:- type: scalerproperties:replicas: 3- type: gatewayproperties:domain: testsvc-mc.example.com# classInSpec : true   如果你所下发的集群里有安装 v1.20 以下版本的 Kubernetes ,请加上这个字段http:"/": 8000policies:- type: topologyname: beijing-clustersproperties:clusters: ["beijing-1","beijing-2"]

可以看到,这个应用使用了 webservice 类型的组件,最后通过 topology 的应用策略分别向 beijing-1 和 beijing-2 两个集群分发 3 副本 Deployment。

请注意,管控集群对子集群下发资源成功的前提是,子集群必须有已经新建的对应命名空间。由于每个集群默认都有 default 命名空间,所以可以正常下发。假设我们将 basic.yaml 的命名空间改成 multi-cluster ,则会收到报错:

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:name: example-appnamespace: default
spec:components:- name: hello-world-servertype: webserviceproperties:image: crccheck/hello-worldport: 8000traits:- type: scalerproperties:replicas: 3- type: gatewayproperties:domain: testsvc-mc.example.com# classInSpec : true   如果你所下发的集群里有安装 v1.20 以下版本的 Kubernetes ,请加上这个字段http:"/": 8000policies:- type: topologyname: beijing-clustersproperties:clusters: ["beijing-1","beijing-2"]

在未来的 KubeVela 版本中,我们将支持使用鉴权系统,更便捷更安全的完成这项操作:通过管控集群一键在子集群创建命名空间。

完成子集群命名空间创建后,切回管控集群创建应用并下发资源:

➜   vela up -f basic.yaml
Applying an application in vela K8s object format...
"patching object" name="example-app" resource="core.oam.dev/v1beta1, Kind=Application"
✅ App has been deployed 🚀🚀🚀Port forward: vela port-forward example-appSSH: vela exec example-appLogging: vela logs example-appApp status: vela status example-appService status: vela status example-app --svc hello-world-server

我们通过 vela status <应用名> 查看服务相关信息:

➜   vela status example-app
About:Name:        example-appNamespace:   defaultCreated at:  2022-03-25 17:42:33 +0800 CSTStatus:      runningWorkflow:mode: DAGfinished: trueSuspend: falseTerminated: falseSteps- id:wftf9d4exjname:deploy-beijing-clusterstype:deployphase:succeededmessage:Services:- Name: hello-world-serverCluster: beijing-1  Namespace: defaultType: webserviceHealthy Ready:3/3Traits:✅ scaler      ✅ gateway: Visiting URL: testsvc-mc.example.com, IP: 60.205.222.30- Name: hello-world-serverCluster: beijing-2  Namespace: defaultType: webserviceHealthy Ready:3/3Traits:✅ scaler      ✅ gateway: Visiting URL: testsvc-mc.example.com, IP: 182.92.222.128

beijing-1 和 beijing-2 都下发了对应的资源,它们可供外部访问的 IP 地址也显示出来,你因而可以用你希望的方式供用户访问了。

使用集群 labels 按需分组分发

除了上述的基本操作,我们常常会遇到另外的情况:跨地域部署到某些集群、指定哪个云厂商的集群等等。为了实现类似这样的需求,可以使用多集群的 labels 功能。

在这里,假设 us-west-1 集群来自 AWS,我们要额外分发应用到 AWS 的集群,则可以使用 vela cluster labels add 来对集群进行标记。当然,如果还有 us-west-2 等多个 AWS 相关集群,同样进行标记后,将会统一下发:

➜  ~ vela cluster labels add us-west-1 provider=AWS
Successfully update labels for cluster us-west-1 (type: X509Certificate).
provider=AWS
➜  ~ vela cluster list
CLUSTER          TYPE             ENDPOINT                   ACCEPTED  LABELS
beijing-1        X509Certificate  https://47.95.22.71:6443   true
beijing-2        X509Certificate  https://47.93.117.83:6443  true
us-west-1        X509Certificate  https://47.88.31.118:6443  true      provider=AWS

接下来我们对 basic.yaml 进行更新,新增一个应用策略 topology-aws:

...policies:- type: topologyname: beijing-clustersproperties:clusters: ["beijing-1","beijing-2"]- type: topologyname: topology-awsproperties:clusterLabelSelector:provider: AWS

为了方便你学习,请直接部署基于 basic.yaml 更新后的 intermediate.yaml:

➜  ~ vela up -f intermediate.yaml

再次查看应用的状态:

➜   vela status example-app...- Name: hello-world-serverCluster: us-west-1  Namespace: defaultType: webserviceHealthy Ready:3/3Traits:✅ scaler      ✅ gateway: Visiting URL: testsvc-mc.example.com, IP: 192.168.40.10

通过应用策略进行配置差异化

除了在 basic.yaml 里定义的 deploy-beijing 这种应用策略,我们往往有更多的应用策略需求,比如高可用,希望单独给某些资源分发 5 个副本。这样的话,使用 override 类型的应用策略即可:

...        clusterLabelSelector:provider: AWS-  type: overridename: override-high-availabilityproperties:components:- type: webservicetraits:- type: scalerproperties:replicas: 5

同时假设,我们希望的是,给 AWS 的应用分发并设置为高可用。那我们可以使用 KubeVela 提供的专门用于定义过程控制的工作流来管理。我们使用如下的一个工作流,它希望将本次应用部署,首先通过 deploy-beijing 的应用策略,分发给北京的集群们,接着给 Label 为 AWS 的集群分发 5 个副本高可用的应用策略:

...                properties:replicas: 5workflow:steps:- type: deployname: deploy-beijingproperties:policies: ["beijing-clusters"]- type: deployname: deploy-awsproperties:policies: ["override-high-availability","topology-aws"]

接着我们给 intermediate.yaml 加上以上的应用策略和工作流后,更新为 advanced.yaml:

...policies:- type: topologyname: beijing-clustersproperties:clusters: ["beijing-1","beijing-2"]- type: topologyname: topology-awsproperties:clusterLabelSelector:provider: AWS-  type: overridename: override-high-availabilityproperties:components:- type: webservicetraits:- type: scalerproperties:replicas: 5workflow:steps:- type: deployname: deploy-beijingproperties:policies: ["beijing-clusters"]- type: deployname: deploy-awsproperties:policies: ["override-high-availability","topology-aws"]

然后对其进行部署,并再次查看应用的状态:

➜   vela up -f advanced.yaml
Applying an application in vela K8s object format...
"patching object" name="example-app" resource="core.oam.dev/v1beta1, Kind=Application"
✅ App has been deployed 🚀🚀🚀Port forward: vela port-forward example-appSSH: vela exec example-appLogging: vela logs example-appApp status: vela status example-appService status: vela status example-app --svc hello-world-serverapplication.core.oam.dev/podinfo-app configured➜   vela status example-app...- Name: hello-world-serverCluster: us-west-1  Namespace: defaultType: webserviceHealthy Ready:5/5Traits:✅ scaler      ✅ gateway: Visiting URL: testsvc-mc.example.com, IP: 192.168.40.10

以上就是本次的全部分享,感谢你的阅读和试玩。

欢迎你继续探索 KubeVela v1.3 正式版[3],这里有更多差异化配置的进阶用法等你发现和使用,比如 override 应用策略如何完成资源类型通配还是针对某些特定组件进行覆盖等等,以满足更加复杂的场景需求。

相关链接

[1] KubeVela v1.3

https://github.com/oam-dev/kubevela/releases/tag/v1.3.0

[2] multi-cluster-demo

https://github.com/oam-dev/samples/tree/master/12.Multi_Cluster_Demo

[3] 继续探索 KubeVela v1.3 正式版

快速安装 | KubeVela

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

Java 定时任务技术趋势

简介&#xff1a;定时任务是每个业务常见的需求&#xff0c;比如每分钟扫描超时支付的订单&#xff0c;每小时清理一次数据库历史数据&#xff0c;每天统计前一天的数据并生成报表等等。 作者&#xff1a;黄晓萌&#xff08;学仁&#xff09; Java 中自带的解决方案 使用 Ti…

ajax,jsonp,axios面试题

什么是前后端联调&#xff1f; react中axios跨域的配置 const { createProxyMiddleware } require(http-proxy-middleware); module.exports function (app) {app.use(// https://home-api.pinduoduo.com/home/mediareports?page_number1&page_size20/home, createPro…

从再造到赋能——360数科举办第二届技术开放日

8月31日&#xff0c;360数科在北京举办“从再造到赋能——2022年技术开放日”。这是360数科的第二届开放日&#xff0c;全面展示了公司在金融科技业务全环节的精细化运营成果&#xff0c;呈现了360数科从市场连接者到流程再造者的技术演化历程&#xff0c;展望了其成为行业赋能…

EventBridge 特性介绍|以 IaC 的方式使用 EventBridge

简介&#xff1a;本文将重点介绍 EventBridge 和 IaC 的重点概念和特性&#xff0c;然后演示如何应用 IaC 理念自动化部署 EventBridge 来使用这些概念和特性。 作者&#xff1a;王川&#xff08;弗丁&#xff09; 引言 EventBridge 作为构建 EDA 架构的基础设施&#xff0c…

关于项目经验的

页面常用的尺寸 PC&#xff1a;内容区宽度&#xff1a; 早期&#xff1a;60 980 1000 1200 1380 字体大小&#xff1a; 12px 14px 16px 18px 常用字体&#xff1a;“微软雅黑” Arial&#xff08;针对英文&#xff09; H5&#xff1a; 750(大多设计稿的宽度) 暂时保留页面状态…

如何使用 Serverless Devs 部署静态网站到函数计算(上)

简介&#xff1a;部署个静态网站到函数计算~ 前言 公司经常有一些网站需要发布上线&#xff0c;对比了几款不同的产品后&#xff0c;决定使用阿里云的函数计算&#xff08;FC)来托管构建出来的静态网站。 FC 弹性实例自带的500 Mb 存储空间对静态网站来说简直是太充足了 。 函…

盛邦安全创始人权晓文入选IDC中国CSO名人堂十大人物

在近日举办的IDC 2022 CSO全球网络安全峰会&#xff08;中国站&#xff09;上&#xff0c;盛邦安全入选API领域推荐厂商&#xff0c;盛邦安全创始人权晓文入选“中国CSO名人堂&#xff08;十大人物&#xff09;”&#xff0c;展现了盛邦安全在网络安全创新方面的不断进取和突出…

硬核调试实操 | 手把手带你实现 Serverless 断点调试

简介&#xff1a;本文将借助 Serverless Devs 工具&#xff0c;对函数计算 (FC&#xff09;应用的断点调试步骤进行详细指导&#xff0c;手把手带你实现 Serverless 的断点调试&#xff0c;并从以下四个方面为你厘清“硬核调试”的脉络步骤&#xff0c;干货满满。 导读&#x…

axios的安装指令

react中安装axios yarn add axios //安装代理 yarn add http-proxy-middleware

兑现 Service Mesh 的新价值:精确控制“爆炸半径”

简介&#xff1a;本文分享了阿里云内部所沉淀的全链路流量打标与路由的能力&#xff0c;做出服务网格技术新体验的同时&#xff0c;很好地兑现了服务网格的新价值。 作者&#xff1a;至简 软件是以持续迭代的方式去不断演进的。某种程度上&#xff0c;我们并不担心软件不完善…

15M安装包就能玩《原神》,带你了解云游戏背后的技术秘密

简介&#xff1a;对于大多数玩家来说&#xff0c;云游戏已经不是一个陌生的概念&#xff0c;它经常和秒玩、不吃设备、大屏临场感、上手门槛低、真香等字眼一起出现在评论留言区。的确&#xff0c;对于既想尝试高品质游戏大作又不想一直卷装备的玩家来说&#xff0c;云游戏做到…

ref绑定dom的三种写法

1、字符串形式 这种字符出串写法因为效率不好&#xff0c;所以不推荐使用 语法 标签上使用ref"name" 进行绑定 方法中this.refs.name拿到dom <input ref"input1" type"text" placeholder"点击按钮弹出内容" /> <button onC…

一文看懂边缘云在广电行业的应用

简介&#xff1a;随着中国广电的5G布局在不断加速&#xff0c;各地广电运营商均已开展面向边缘云建设和业务探索。边缘云作为5G网络架构中关键一环&#xff0c;具有广覆盖、低时延、大带宽的技术特点&#xff0c;是打通智慧广电建设的“经脉”&#xff0c;对未来开展4K/8K超高清…

2022 互联网中秋月饼大赏,腾讯送火腿,字节寓意圆满,你最钟爱哪款呢?(文末有抽奖)...

整理 | 梦依丹出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;配图来自视觉中国又是一年花好处&#xff0c;人月中秋两团圆&#xff01;今年的中秋&#xff0c;你是在家乡还是在他乡度过呢&#xff1f;无论在何处&#xff0c;只要心在一起&#xff0c;多远都不是距…

宜搭小技巧|自动计算日期时长,3个公式帮你敲定

简介&#xff1a;使用「时间函数」实现日期时长自动计算功能&#xff0c;让表单填写更轻松。 上一期&#xff0c;我们学会了如何巧用日期组件保证时间填写不出错。 今天&#xff0c;宜小搭要出差&#xff0c;由于公司要根据出差时长发放补贴&#xff0c;但手动计算出差天数太…

构造函数、实例、原型对象、继承

一、构造函数与原型对象之间的关系&#xff1a; 有一个Star构造函数&#xff0c;每一个构造函数里面都有一个原型对象&#xff0c;是通过构造函数的prototype指向这个原型对象的 同样在这个原型对象里面也有一个属性叫constructor&#xff0c;它又指回了构造函数 可以把构造函…

从中心走向边缘——深度解析云原生边缘计算落地痛点

简介&#xff1a;边缘计算平台的建设&#xff0c;以 Kubernetes 为核心的云原生技术体系&#xff0c;无疑是当前最佳的选择与建设路径&#xff1b;但是云原生体系庞大&#xff0c;组件复杂&#xff0c;将体系下沉至边缘会面临很大的挑战与困难&#xff0c;同时充满巨大的机遇及…

5G+元宇宙创新应用来了,第五届“绽放杯”5G 应用征集大赛云 XR 专题赛落下帷幕...

2022“云 XR 年度十大标杆案例”诞生&#xff01;8 月 31 日&#xff0c;第五届“绽放杯”5G 应用征集大赛云 XR 专题赛决赛在浙江杭州举办&#xff0c;经全天激烈角逐&#xff0c;“中国历代绘画大系 5G 云 XR 应用”等 10 个优秀项目脱颖而出荣获一等奖&#xff0c;并将经组委…

阿里云资深专家李国强:云原生的一些趋势和新方向

简介&#xff1a;云原生不仅仅是技术&#xff0c;更重要的是云原生技术需要和云计算进行结合&#xff0c;帮助用户构建云原生架构的应用。 2021 年 11 月 26 日&#xff0c;阿里云用户组&#xff08;AUG&#xff09;第 3 期活动在广州顺利举行。具有丰富的容器、微服务等领域经…

react如何获取表单数据

react如何获取表单数据&#xff1f; 分为两种情况&#xff1a;第一种是每次输入都会更新状态第二种是只有用到的时候才获取&#xff08;会用大量的ref&#xff0c;不推荐&#xff09;这里主要介绍第一种 //这是我们要操作的数据state {resume:{username: ,password:}}//通过…