安装 Kubeflow Operators
本文介绍如何在 Alauda AI 2.3 及更高版本中部署与 Kubeflow 相关的 operator。
从 v26.3.0(Alauda AI v2.3)开始,Kubeflow 以 OLM Helm Operators 的形式发布,而不是早期的 Cluster Plugin 形态。安装通过 ACP OperatorHub 完成,而不是通过 Cluster Plugins。这些 operator 封装了上游 kubeflow/manifests 26.03 charts。
支持的 operator:
kfbase-operator:Kubeflow 基础组件,包括身份验证和授权、中心监控面板、Notebooks、PVC Viewer、TensorBoards、Volumes、Model Registry UI、KServe Endpoints UI,以及 Model Catalog API service。负责管理KubeflowBaseCR。架构:amd64、arm64。kfp-operator:Kubeflow Pipelines(KFP runtime 2.16.0)。负责管理KubeflowPipelinesCR。架构:仅amd64(根据 Alauda AI v2.3 支持的配置,Kubeflow Pipelines 仅支持 x86_64)。kubeflow-trainer-operator:Kubeflow Trainer v2(controller-manager 2.1.0 + JobSet 0.10.1)。负责管理KubeflowTrainerCR。架构:amd64、arm64。替代已弃用的kftraining插件。model-registry-operator:Kubeflow Model Registry operator(形态不变)。
注意:
kftrainingCluster Plugin(Kubeflow Training Operator v1)在早期版本中已弃用,并已在 v26.3.0 中退役。请改用kubeflow-trainer-operator(Trainer v2)。
目录
环境准备配置 Dex 重定向配置oauth2-proxy 插件配置 ASM v1(已弃用)配置 ASM v2组件上架部署步骤1. 部署 kfbase-operator(Kubeflow Base)2. 创建 Kubeflow 用户命名空间并绑定用户3. 将用户绑定到现有命名空间4. 部署 kfp-operator(Kubeflow Pipelines)5. 部署 Kubeflow Model Registry6. 部署 kubeflow-trainer-operator(Kubeflow Trainer v2)环境准备
开始之前,请确保满足以下前提条件:
- ACP 环境可用且正在运行。
- Alauda AI 已部署。v26.3.0 operator 集需要 Alauda AI 2.3 或更高版本。
- 已安装 Alauda Build of KServe。
- 业务集群中已部署 ASM,Kubeflow 将运行在该集群中。如果尚未安装 ASM,请先部署后再继续。ASM v1 已弃用。请尽可能使用 ASM v2。
- LeaderWorkerSet 已安装并就绪。LWS 通常由 Alauda AI 通过
defaultAmlCluster中的lws组件进行管理;参见安装 Alauda AI。仅当你计划部署kubeflow-trainer-operator时才需要它。 - 已按照下文配置
oauth2-proxy插件。
配置 Dex 重定向
注意: 在安装
kfbase-operator并创建其KubeflowBaseCR 之前,请先配置用于 Dex 重定向的平台访问 URL。此步骤可能会更新平台 CA 证书。如果你在配置oauth2-proxy后证书发生变化,oauth2-proxy配置可能会失败。
在 管理员 > System Settings > Platform Parameters 中,单击 Platform Access URLs 旁边的 Edit,并添加格式为 https://<your-kubeflow-domain> 的重定向 URL,例如 https://kubeflow.example.com。
<your-kubeflow-domain>必须与KubeflowBaseCR 中的spec.global.kubeflowHost一致。
配置 oauth2-proxy 插件
获取平台 Dex CA 证书,供后续在 Global 集群中使用:
配置 ASM v1(已弃用)
在 global 集群中,或在 ACP Platform Management > Resource Management 中,更新 ServiceMesh 资源,并在 spec 下添加以下内容。
注意: 如果已经配置了
spec.values.pilot.jwksResolverExtraRootCA,则只更新spec.meshConfig.extensionProviders。添加新条目时不要删除现有条目。
配置 ASM v2
注意: 如果仍然存在任何 ASM v1 webhooks,请先将其删除。否则 Kubeflow 身份验证可能会失败。
在 ACP 中,进入 管理员 > MarketPlace > OperatorHub,找到 Alauda Service Mesh v2,打开 All Instances 选项卡,定位类型为 Istio 的实例,例如 default,单击 Update,并在 spec 下添加以下内容:
组件上架
下载以下 operator 的 bundle 软件包,然后按照上架软件包进行上传。这些 bundle 会将 operator 注册到 ACP OperatorHub。
kfbase-operator:Kubeflow 基础功能(负责管理KubeflowBaseCR)。kfp-operator:Kubeflow Pipelines(负责管理KubeflowPipelinesCR)。仅支持 amd64。kubeflow-trainer-operator:Kubeflow Trainer v2(负责管理KubeflowTrainerCR)。替代已弃用的kftraining。model-registry-operator:Kubeflow Model Registry operator。
部署步骤
1. 部署 kfbase-operator(Kubeflow Base)
在 管理员 > MarketPlace > OperatorHub 中找到 kfbase-operator,然后单击 Install。接着打开 All Instances 选项卡,并创建一个 KubeflowBase CR,将 spec.global.kubeflowHost 设置为你的 Kubeflow 域名。等待部署完成。
部署完成后:
- 在 管理员 > System Settings > Platform Parameters 中,确认 Platform Access URLs 包含格式为
https://<your-kubeflow-domain>的地址,其中<your-kubeflow-domain>与KubeflowBaseCR 中的spec.global.kubeflowHost一致。 - 配置 DNS 解析,或添加本地 hosts 条目,使
<your-kubeflow-domain>解析到kubectl -n istio-system get gateway kubeflow-external-gateway分配的 IP 地址。
部署完成后,Kubeflow 入口会出现在 Alauda AI 的 Tools 下。
有关升级相关操作,请参见升级 Kubeflow Operators。
2. 创建 Kubeflow 用户命名空间并绑定用户
在用户首次登录 Kubeflow 之前,需要先将 ACP 用户绑定到某个命名空间。以下示例将创建命名空间 kubeflow-admin-cpaas-io,并将 admin@cpaas.io 设为所有者。
注意: 如果在 Alauda AI 部署期间已经创建了该
Profile资源,则可以跳过此步骤。注意: 在创建 Notebook 实例及类似工作负载之前,你可能需要降低用户命名空间的 Pod Security Admission 级别。
3. 将用户绑定到现有命名空间
如果 Alauda AI 已经部署,且命名空间 kubeflow-admin-cpaas-io 已存在,那么 Profile 也可能已经存在。如果该命名空间仍未出现在 Kubeflow 中,请创建以下资源,将该账户绑定到该命名空间:
4. 部署 kfp-operator(Kubeflow Pipelines)
在 管理员 > MarketPlace > OperatorHub 中找到 kfp-operator,然后单击 Install。接着在 operator 实例命名空间中创建一个 KubeflowPipelines CR。待 CR 完成调谐后,KFP runtime 组件将被部署,且与 pipeline 相关的功能将在 Kubeflow UI 中可用。
注意:
kfp-operator仅支持 amd64。请勿在仅支持 arm64 的集群上安装。注意: 只有在
KubeflowPipelines完成调谐后,Kubeflow UI 中才会显示 pipeline 相关功能。
5. 部署 Kubeflow Model Registry
在 管理员 > MarketPlace > OperatorHub 中找到 Model Registry Operator,然后单击 Install。
安装 operator 后,打开 All Instances 选项卡,并在用户的命名空间中创建一个 ModelRegistry 实例。
注意: 请在已经绑定到 Kubeflow
Profile的命名空间中创建该实例。否则不会显示 Model Registry UI。
创建实例时,请按需配置以下字段:
- 名称:Model Registry 实例的名称。
- 命名空间:实例运行所在的命名空间。该命名空间必须已绑定到 Kubeflow
Profile。 - MySQL Storage Class:用于 Model Registry 元数据的存储类,例如
standard。 - MySQL Storage Size:元数据数据库的存储大小。默认值为
10Gi。 - DisplayName:Model Registry 实例的显示名称。
- Description:实例的简短描述。
注意: 实例启动后,请刷新 Kubeflow 左侧导航中的 Model Registry 入口,以查看新实例。在创建第一个实例之前,Model Registry 页面为空。
注意: Model Registry 实例会限制来自其他命名空间的网络请求。若要允许其他命名空间访问,请编辑该实例的
authorizationpolicy,例如执行kubectl -n <your-namespace> edit authorizationpolicy <model-registry-name>,并根据 Istio 文档更新策略。注意: 你可以在不同的命名空间中部署多个 Model Registry 实例。每个实例都是独立的。
6. 部署 kubeflow-trainer-operator(Kubeflow Trainer v2)
注意: 如果仍然安装着已弃用的
kftrainingCluster Plugin(来自 v26.3.0 之前的集群),请先卸载它,然后再安装kubeflow-trainer-operator。注意: LeaderWorkerSet 是
kubeflow-trainer-operator的依赖项。在部署kubeflow-trainer-operator之前,请通过defaultAmlCluster中的lws组件确认 LWS 已启用并就绪;参见安装 Alauda AI。注意:
kubeflow-trainer-operator的 v26.3.0 版本与上游kubeflow/manifests26.03 对齐,并随附 Trainer v2.1.0 + JobSet v0.10.1。对于某些 OLM CatalogSource 已经声明更高 trainer 版本(>=2.2.0)的集群,请使用installPlanApproval: Manual和startingCSV: kubeflow-trainer-operator.v2.1.0进行安装,以防止 OLM 自动升级并超过 26.03 的版本锁定。
在 管理员 > MarketPlace > OperatorHub 中找到 kubeflow-trainer-operator,单击 Install,如果需要锁定版本,请选择 Manual install-plan approval,然后打开 All Instances 选项卡,并创建一个启用了 JobSet 的 KubeflowTrainer CR。