使用 Karmada 管理多个 OKE 集群上的工作负载
简介
Karmada(Kubernetes Armada 的简称)是一个管理平台,允许您跨多个 Kubernetes 集群和云环境无缝运行云原生应用,而无需对应用进行任何更改。Karmada 利用 Kubernetes 原生 API 和高级调度功能,提供开放、真正的多云 Kubernetes 体验。
Karmada 专为多云和混合云使用场景而设计,可为跨集群管理应用提供一站式自动化。其核心功能包括集中管理、高可用性、自动故障恢复和智能流量调度。
目标
-
在主机 OKE 群集上安装
karmada组件。 -
加入 2 个 OKE 成员群集以加入 karmada。
-
使用分布在 2 个 OKE 集群中的云池创建部署。
Prerequisites
-
OCI 上的活动租户
-
具有足够的权限来创建资源的用户
注:只能将工作量身份用于增强集群。
-
已在其中创建用于部署资源的区间
-
区间中所有 VM 的动态组:
All {instance.compartment.id = 'ocid1.compartment.oc1...'} -
使用实例主体运行 OCI CLI 命令的策略:
allow dynamic-group <dynamic-group-name> to manage cluster-family in compartment <compartment-name>
任务 1:为演示创建必要的资源
注:以下步骤说明如何部署将在演示期间使用的 3 个 OKE 集群和 1 个 VM。
-
从 github 下载包含 terraform 文件的发行版 zip: karmada-on-oke 。
-
使用 Oracle Resource Manager 创建和应用堆栈。
- 使用汉堡菜单,转至 Oracle Resource Manager。
- 选择
Stacks。 - 选择
Create stack。 - 选择
My configuration。 - 在
My configuration部分中,确保选择了Zip file。选择您以前下载的 zip 文件。选择Upload。 - 为堆栈指定一个有意义的名称。
- 选择
Next。 - 选择将用于连接到 VM 的 SSH 公共密钥。
- 选择要在其中创建资源的区间。
- 选择
Next。 - 在下一个屏幕上,选择
Run apply。 - 选择
Create。
-
获取 VM 的公共 IP。
在上一步中成功运行作业后,日志中的最后一行应包括 VM 的公共 IP。记录下来供以后使用。
任务 2:在主机群集上安装 Karmada
- 使用先前获得的 IP,使用 ssh 连接到 VM:
ssh -i <private-ssh-key> opc@<public-IP> -
切换到 root 用户:
sudo su - -
在主机群集上安装 karmada 组件:
karmadactl init
任务 3:加入 OKE 集群成员
-
加入集群
member1:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member1 --cluster-kubeconfig=$HOME/.kube/config-k1 -
加入集群
member2:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member2 --cluster-kubeconfig=$HOME/.kube/config-k2 -
显示成员集群:
karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters
任务 4:在 Karmada 上部署工作量
-
将
KUBECONFIG设置为指向 karmada-api 服务器:export KUBECONFIG=/etc/karmada/karmada-apiserver.config -
创建部署和相应的传播策略:
kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/deployment.yaml kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/propagationpolicy.yaml -
验证部署:
karmadactl get deployment --operation-scope all输出应类似于:
# karmadactl get deployment --operation-scope all NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION nginx Karmada 3/3 3 3 22m - nginx member2 2/2 2 2 22m Y nginx member1 1/1 1 1 22m Y请注意,在三个 pod 中,两个在
member2上运行,一个在member1上运行。
任务 5:清理
- 从主机群集中卸载 karmada 组件:
karmadactl --kubeconfig /root/.kube/config deinit
- 销毁使用 terraform 堆栈创建的资源:
- 导航回 Oracle Resource Manager。
- 选择您创建的堆栈。
- 选择
Destroy。
确认
- 作者 -Daniel Dinu(首席云工程师)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。