本地部署

关于 Kubeflow Pipelines 本地部署的信息 (kind, K3s, K3ai)

本指南介绍如何使用以下工具在本地 Kubernetes 集群上独立部署 Kubeflow Pipelines

  • kind
  • K3s
  • 在 Windows Subsystem for Linux (WSL) 上安装 K3s
  • K3ai [alpha]
  • Docker-Desktop

这些部署方法可以使用提供的 kustomize manifest 作为本地环境的一部分,用于测试目的。本指南是以下内容的替代方法

部署 Kubeflow Pipelines (KFP).

开始之前

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 中的目录

注意: 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 上创建集群

  1. 要在 K3s 上创建 Kubernetes 集群,请使用以下命令

    sudo k3s server &
    

    这将引导一个 Kubernetes 集群,kubeconfig 将写入到 /etc/rancher/k3s/k3s.yaml 中。

  2. (可选)检查您的集群

    sudo k3s kubectl get node
    

    K3s 将流行的 kubectl 命令直接嵌入到二进制文件中,因此您可以立即通过它与集群进行交互。

  3. (可选)在不同的节点上运行以下命令。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 的内容。

  1. 按照官方文档安装 [WSL]。

  2. 根据官方说明,更新 WSL 并下载您喜欢的发行版

参考资料:

2. 在 WSL 上创建 K3s 集群

以下是在 WSL 中 K3s 上创建集群的步骤

  1. 要在 WSL 中的 K3s 上创建 Kubernetes 集群,请运行以下命令

    sudo ./k3s server
    

    这将引导一个 Kubernetes 集群,但您还无法从 Windows 机器访问集群本身。

    注意: 您无法使用 curl 脚本安装 K3s,因为 WSL 中没有 supervisor (systemd 或 openrc)。

  2. https://github.com/rancher/k3s/releases/latest 下载 K3s 二进制文件。然后,在您下载 K3s 二进制文件的目录中,运行此命令为 K3s 二进制文件添加执行权限

    chmod +x k3s
    
  3. 启动 K3s

    sudo ./k3s server
    

3. 设置访问 WSL 实例的权限

要设置对 WSL 实例的访问权限

  1. /etc/rancher/k3s/k3s.yaml 从 WSL 复制到 $HOME/.kube/config

  2. 编辑复制的文件,将服务器 URL 从 https://localhost:6443 更改为您 WSL 实例的 IP 地址 (ip addr show dev eth0)(例如,https://192.168.170.170:6443)。

  3. 在 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 集群

  1. 打开 Docker-Desktop 仪表盘。
  2. 单击设置按钮打开设置。
  3. 导航到左侧的 Kubernetes 选项卡。
  4. 选中“Enable Kubernetes”复选框,单击“Apply and restart”并等待应用程序重启。
  5. 要检查集群是否已启动并正在运行,请打开命令提示符并运行以下命令
    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)都是相同的。

  1. 要部署 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 部署可能需要几分钟才能完成。

  2. 通过端口转发验证 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
    

反馈

本页是否有帮助?