本地部署
旧版本
本页介绍的是 Kubeflow Pipelines V1,最新的信息请参阅V2 文档。
请注意,虽然 V2 后端能够运行 V1 SDK 提交的流水线,但我们强烈建议迁移到 V2 SDK。作为参考,V1 SDK 的最终发布版本是 kfp==1.8.22
,其参考文档可在此处获取。
本指南介绍如何使用以下工具在本地 Kubernetes 集群上独立部署 Kubeflow Pipelines
- kind
- K3s
- 在 Windows Subsystem for Linux (WSL) 上安装 K3s
- K3ai [alpha]
- Docker-Desktop
这些部署方法可以使用提供的 kustomize manifest 作为本地环境的一部分,用于测试目的。本指南是以下内容的替代方法
开始之前
您应该熟悉 Kubernetes、kubectl 和 kustomize。
为了获得 kustomize 的原生支持,您需要 kubectl v1.14 或更高版本。您可以按照kubectl 安装指南下载并安装 kubectl。
kind
1. 安装 kind
kind 是一个使用 Docker 容器节点运行本地 Kubernetes 集群的工具。kind
主要设计用于测试 Kubernetes 本身。它也可以用于本地开发或持续集成 (CI)。
您可以按照官方快速入门安装和配置 kind。
要开始使用 kind
在 Linux 上
运行以下命令下载 kind 可执行文件并将其移动到您的 PATH 目录中
curl -Lo ./kind https://kind.kubernetes.ac.cn/dl/{KIND_VERSION}/kind-linux-amd64 && \
chmod +x ./kind && \
mv ./kind /{YOUR_KIND_DIRECTORY}/kind
替换以下内容
{KIND_VERSION}
: kind 版本;例如,在本指南撰写时为v0.8.1
{YOUR_KIND_DIRECTORY}
: 您在 PATH 中的目录
在 macOS 上
您可以使用 Homebrew 安装 kind
brew install kind
在 Windows 上
您可以使用管理员 PowerShell 控制台运行以下命令,将 kind 可执行文件下载并移动到您的 PATH 目录中
PowerShell: 运行这些命令将 kind 可执行文件下载并移动到您的 PATH 目录中
curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/{KIND_VERSION}/kind-windows-amd64 Move-Item .\kind-windows-amd64.exe c:\{YOUR_KIND_DIRECTORY}\kind.exe
替换以下内容
{KIND_VERSION}
: kind 版本 - 例如,v0.9
(请在 kind 发行版页面查看最新的稳定二进制版本){YOUR_KIND_DIRECTORY}
: 您在 PATH 中的 kind 目录
{KIND_VERSION}
: kind 版本;例如,在本指南撰写时为v0.8.1
{YOUR_KIND_DIRECTORY}
: 您在 PATH 中的目录
或者,您可以使用 Chocolatey https://chocolatey.org/packages/kind
choco install kind
注意: kind 默认使用 containerd 作为容器运行时,因此您无法使用标准的 Kubeflow Pipeline manifest。
参考资料:
参考资料
2. 在 kind 上创建集群
安装 kind 后,您可以使用此命令在 kind 上创建 Kubernetes 集群
kind create cluster
这将使用预构建的节点镜像引导 Kubernetes 集群。您可以在 Docker Hub 的 kindest/node
此处找到该镜像。如果您希望自己构建节点镜像,可以使用 kind build node-image
命令——有关更多详细信息,请参阅官方构建镜像部分。要指定另一个镜像,请使用 --image
标志。
默认情况下,集群的名称将为 kind。使用 --name
标志为集群分配不同的上下文名称。
K3s
1. 在 K3s 上设置集群
K3s 是一个完全兼容的 Kubernetes 分布版,具有以下增强功能
打包为单个二进制文件。
基于 sqlite3 的轻量级存储后端作为默认存储机制。etcd3、MySQL、Postgres 也仍然可用。
包装在一个简单的启动器中,处理了 TLS 和选项的大部分复杂性。
默认为安全配置,为轻量级环境提供了合理的默认值。
添加了简单但强大的“开箱即用”功能,例如:本地存储提供程序、服务负载均衡器、Helm 控制器和 Traefik Ingress 控制器。
所有 Kubernetes 控制平面组件的操作都封装在一个单一的二进制文件和进程中。这使得 K3s 能够自动化和管理复杂的集群操作,例如分发证书。
外部依赖项已最小化(只需现代内核和 cgroup 挂载)。K3s 打包了所需的依赖项,包括
- containerd
- Flannel
- CoreDNS
- CNI
- 主机工具 (iptables, socat, 等)
- Ingress 控制器 (traefik)
- 嵌入式服务负载均衡器
- 嵌入式网络策略控制器
您可以在官方 K3s 网站上找到官方 K3s 安装脚本,以便在基于 systemd 或 openrc 的系统上将其作为服务安装。
要使用该方法安装 K3s,请运行以下命令
curl -sfL https://get.k3s.io | sh -
参考资料:
2. 在 K3s 上创建集群
要在 K3s 上创建 Kubernetes 集群,请使用以下命令
sudo k3s server &
这将引导一个 Kubernetes 集群,kubeconfig 将写入到
/etc/rancher/k3s/k3s.yaml
中。(可选)检查您的集群
sudo k3s kubectl get node
K3s 将流行的 kubectl 命令直接嵌入到二进制文件中,因此您可以立即通过它与集群进行交互。
(可选)在不同的节点上运行以下命令。
NODE_TOKEN
来自服务器上的/var/lib/rancher/k3s/server/node-token
sudo k3s agent --server https://myserver:6443 --token {YOUR_NODE_TOKEN}
在 Windows Subsystem for Linux (WSL) 上安装 K3s
1. 在 Windows Subsystem for Linux (WSL) 上设置 K3s 集群
Windows Subsystem for Linux (WSL) 允许开发人员在 Windows 上直接运行 GNU/Linux 环境——包括大多数命令行工具、实用程序和应用程序,无需修改,也没有传统虚拟机或双启动设置的开销。
可以在官方 Windows 网站上找到安装 WSL 的完整说明。
以下步骤总结了您需要设置 WSL 以及在 WSL 上设置 K3s 的内容。
按照官方文档安装 [WSL]。
根据官方说明,更新 WSL 并下载您喜欢的发行版
参考资料:
2. 在 WSL 上创建 K3s 集群
以下是在 WSL 中 K3s 上创建集群的步骤
要在 WSL 中的 K3s 上创建 Kubernetes 集群,请运行以下命令
sudo ./k3s server
这将引导一个 Kubernetes 集群,但您还无法从 Windows 机器访问集群本身。
注意: 您无法使用 curl 脚本安装 K3s,因为 WSL 中没有 supervisor (systemd 或 openrc)。
从 https://github.com/rancher/k3s/releases/latest 下载 K3s 二进制文件。然后,在您下载 K3s 二进制文件的目录中,运行此命令为 K3s 二进制文件添加执行权限
chmod +x k3s
启动 K3s
sudo ./k3s server
3. 设置访问 WSL 实例的权限
要设置对 WSL 实例的访问权限
将
/etc/rancher/k3s/k3s.yaml
从 WSL 复制到$HOME/.kube/config
。编辑复制的文件,将服务器 URL 从
https://localhost:6443
更改为您 WSL 实例的 IP 地址 (ip addr show dev eth0
)(例如,https://192.168.170.170:6443
)。在 Windows 终端中运行 kubectl。如果您没有安装 kubectl,请遵循官方 Windows 上的 Kubernetes 说明。
K3ai [alpha]
K3ai 是一个轻量级的“箱中基础设施”,专门设计用于在便携式硬件(例如笔记本电脑和边缘设备)上安装和配置 AI 工具和平台。这使得用户可以在本地集群上快速进行 Kubeflow 实验。
K3ai 的主要目标是提供一种快速方法,只需一行代码即可安装 Kubernetes(基于 K3s)和支持 NVIDIA GPU 的 Kubeflow Pipelines 以及 TensorFlow Serving。(关于 Kubeflow 和其他组件的支持,请查看 K3ai 网站获取更新。)要使用 K3ai 安装 Kubeflow Pipelines,请运行以下命令
- 仅支持 CPU
curl -sfL https://get.k3ai.in | bash -s -- --cpu --plugin_kfpipelines
- 支持 GPU
curl -sfL https://get.k3ai.in | bash -s -- --gpu --plugin_kfpipelines
有关 K3ai 的更多信息,请参阅官方文档。
Docker-Desktop
Docker Desktop 是安全、开箱即用的容器化软件,为开发人员和团队提供强大、混合的工具包,可在任何地方构建、共享和运行应用程序。
1. 安装 Docker-Desktop
您可以按照官方快速入门安装和配置 Docker-Desktop。
在 Windows 上 - 下载并运行 Docker Desktop Installer.exe 文件,然后按照安装程序中的说明进行操作。
2. 在 Docker-Desktop 上创建集群
安装 Docker-Desktop 后,您可以按照以下步骤在 Docker-Desktop 上创建 Kubernetes 集群
- 打开 Docker-Desktop 仪表盘。
- 单击设置按钮打开设置。
- 导航到左侧的 Kubernetes 选项卡。
- 选中“Enable Kubernetes”复选框,单击“Apply and restart”并等待应用程序重启。
- 要检查集群是否已启动并正在运行,请打开命令提示符并运行以下命令您应该看到以下输出
kubectl cluster-info
Kubernetes control plane is running at https://kubernetes.docker.internal:<some-port> CoreDNS is running at https://kubernetes.docker.internal:<some-port>/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
要进一步调试和诊断集群问题,请使用 kubectl cluster-info dump
。
部署 Kubeflow Pipelines
Kubeflow Pipelines 的安装过程对于本指南中介绍的所有三种环境(kind、K3s、Docker-desktop 和 K3ai)都是相同的。
要部署 Kubeflow Pipelines,请运行以下命令
export PIPELINE_VERSION=2.4.0 kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/cluster-scoped-resources?ref=$PIPELINE_VERSION" kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/platform-agnostic?ref=$PIPELINE_VERSION"
Kubeflow Pipelines 部署可能需要几分钟才能完成。
通过端口转发验证 Kubeflow Pipelines UI 是否可访问
kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80
然后,在
http://localhost:8080/
或 - 如果您在虚拟机中使用 kind 或 K3s -http://{YOUR_VM_IP_ADDRESS}:8080/
打开 Kubeflow Pipelines UI请注意,K3ai 会在安装过程结束时自动打印 Web UI 的 URL。
注意:
kubectl apply -k
接受本地路径和格式为 hashicorp/go-getter URL 的路径。虽然前述命令中的路径看起来像 URL,但它们不是有效的 URL。
卸载 Kubeflow Pipelines
以下是在 kind、K3s 或 K3ai 上移除 Kubeflow Pipelines 的步骤
要使用您的 manifest 文件卸载 Kubeflow Pipelines,请运行以下命令,将
{YOUR_MANIFEST_FILE}
替换为您的 manifest 文件名kubectl delete -k {YOUR_MANIFEST_FILE}`
要使用 Kubeflow Pipelines GitHub 仓库中的 manifest 文件卸载 Kubeflow Pipelines,请运行以下命令
export PIPELINE_VERSION=2.4.0 kubectl delete -k "github.com/kubeflow/pipelines/manifests/kustomize/env/platform-agnostic?ref=$PIPELINE_VERSION" kubectl delete -k "github.com/kubeflow/pipelines/manifests/kustomize/cluster-scoped-resources?ref=$PIPELINE_VERSION"
要使用您的本地仓库或文件系统中的 manifest 文件卸载 Kubeflow Pipelines,请运行以下命令
kubectl delete -k manifests/kustomize/env/platform-agnostic kubectl delete -k manifests/kustomize/cluster-scoped-resources