在当今的多集群业务场景下,我们经常遇到的需求有:分发到多个指定集群、按业务规划实现分组分发、以及对多集群进行差异化配置等等。
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-app
namespace: default
spec:
components:
- name: hello-world-server
type: webservice
properties:
image: crccheck/hello-world
port: 8000
traits:
- type: scaler
properties:
replicas: 3
- type: gateway
properties:
domain: testsvc-mc.example.com
# classInSpec : true 如果你所下发的集群里有安装 v1.20 以下版本的 Kubernetes ,请加上这个字段
http:
"/": 8000
policies:
- type: topology
name: beijing-clusters
properties:
clusters: ["beijing-1","beijing-2"]
可以看到,这个应用使用了 webservice 类型的组件,最