使用 Karmada 管理多个 OKE 集群上的工作负载

简介

Karmada(Kubernetes Armada 的简称)是一个管理平台,允许您跨多个 Kubernetes 集群和云环境无缝运行云原生应用,而无需对应用进行任何更改。Karmada 利用 Kubernetes 原生 API 和高级调度功能,提供开放、真正的多云 Kubernetes 体验。

Karmada 专为多云和混合云使用场景而设计,可为跨集群管理应用提供一站式自动化。其核心功能包括集中管理、高可用性、自动故障恢复和智能流量调度。

目标

Prerequisites

任务 1:为演示创建必要的资源

注:以下步骤说明如何部署将在演示期间使用的 3 个 OKE 集群和 1 个 VM。

  1. 从 github 下载包含 terraform 文件的发行版 zip: karmada-on-oke

  2. 使用 Oracle Resource Manager 创建和应用堆栈。

    1. 使用汉堡菜单,转至 Oracle Resource Manager。
    2. 选择 Stacks
    3. 选择 Create stack
    4. 选择 My configuration
    5. My configuration 部分中,确保选择了 Zip file。选择您以前下载的 zip 文件。选择 Upload
    6. 为堆栈指定一个有意义的名称。
    7. 选择 Next
    8. 选择将用于连接到 VM 的 SSH 公共密钥。
    9. 选择要在其中创建资源的区间。
    10. 选择 Next
    11. 在下一个屏幕上,选择 Run apply
    12. 选择 Create
  3. 获取 VM 的公共 IP。

    在上一步中成功运行作业后,日志中的最后一行应包括 VM 的公共 IP。记录下来供以后使用。

任务 2:在主机群集上安装 Karmada

  1. 使用先前获得的 IP,使用 ssh 连接到 VM:
    ssh -i <private-ssh-key> opc@<public-IP>
    
  2. 切换到 root 用户:

    sudo su -
    
  3. 在主机群集上安装 karmada 组件:

    karmadactl init
    

任务 3:加入 OKE 集群成员

  1. 加入集群 member1

       karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config  join member1 --cluster-kubeconfig=$HOME/.kube/config-k1
    
  2. 加入集群 member2

       karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config  join member2 --cluster-kubeconfig=$HOME/.kube/config-k2
    
  3. 显示成员集群:

    karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config  get clusters
    

任务 4:在 Karmada 上部署工作量

  1. KUBECONFIG 设置为指向 karmada-api 服务器:

    export KUBECONFIG=/etc/karmada/karmada-apiserver.config
    
  2. 创建部署和相应的传播策略:

    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
    
  3. 验证部署:

    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:清理

  1. 从主机群集中卸载 karmada 组件:
karmadactl --kubeconfig /root/.kube/config deinit
  1. 销毁使用 terraform 堆栈创建的资源:

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心