前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于LLM的AI OPS 探索系列-配置 WireGuard连接本地AI模型和云端容器应用

基于LLM的AI OPS 探索系列-配置 WireGuard连接本地AI模型和云端容器应用

原创
作者头像
行者深蓝
修改2024-07-18 15:51:31
1260
修改2024-07-18 15:51:31
举报
文章被收录于专栏:云原生应用工坊

概述

本文旨在指导如何使用 WireGuard 技术打通本地 AI 模型和云端 Kubernetes 集群之间的连接,以有效利用本地 GPU 资源进行测试和开发,避免云 GPU 实例的高成本。

前提条件

  • 准备一个 AWS EC2 实例 t4g.small(运行 Ubuntu 22.04)。
  • 具备基本的 Kubernetes 和 Helm 知识。
  • 完成 K3S 1.29 和 OpenWebUI 的安装。
  • 在本地 MacBook 上运行 Ollama,使用 Nginx代理转发。

汇总如下

系统

系统

应用负载

AWS EC2 t4g.small

Ubuntu 22.04

WireGuard, K3S 1.29, OpenWebUI

MacBook

MacOS

WireGuard, Ollama, Nginx

描述

子网

云端IP

本地IP

VPN 子网

10.255.0.0/16

10.255.0.1

10.255.0.2

Pod 子网

10.42.0.0/16

N/A

N/A

解决思路

为实现上述目标,我们将采取以下步骤:

  1. 配置 WireGuard: 在云端和本地分别配置 WireGuard 服务器和客户端,确保安全的 VPN 连接。
  2. 定义VPN路由,打通 K3S Pod Net 和 WireGuard VPN subnet
  3. 在本地设备运行AI 模型,与部署在云端的K3S集群内的容器应用建立安全连接。

具体步骤

配置 WireGuard:

  • 云端 Server 节点 WireGuard 配置 /etc/wireguard/wg0.conf
代码语言:bash
复制
[Interface]
PrivateKey = <云端私钥>
Address = 10.255.0.1/32
ListenPort = 51820
SaveConfig = false
MTU = 1420
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT ; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <本地公钥>
AllowedIPs = 10.255.0.0/16,10.42.0.0/16

启动命令: wg-quick up wg0

本地设备 WireGuard 配置

代码语言:bash
复制
[Interface]
PrivateKey = <本地私钥>
ListenPort = 51820
Address = 10.255.0.2/32
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = <云端公钥>
AllowedIPs = 10.255.0.0/16,10.42.0.0/16
Endpoint = <云端公网IP>:51820

测试验证

  • 在本地主机 ping 10.255.0.1 确保连接正常
  • 在云端主机 ping 10.255.0.2 确保连接正常
  • 部署测试验证 Pod 创建一个测试验证 Pod 以确保 Kubernetes 集群与本地设备通过 WireGuard VPN 连接正常。使用以下 YAML 文件配置 Pod:
代码语言:yaml
复制
# alpine-tools.yaml
kind: Pod
metadata:
  name: alpine-tools
spec:
  containers:
  - name: alpine
    image: alpine:latest
    command: ["sh", "-c", "apk add --no-cache bash curl netcat-openbsd iputils && sleep infinity"]

应用此配置文件来创建 Pod:kubectl apply -f alpine-tools.yaml

  • 在 Pod 中进行连接测试 进入刚刚创建的 alpine-tools Pod 并进行连接测试:
代码语言:bash
复制
kubectl exec -t -i alpine-tools -- sh
  • 在 Pod 的命令行中,运行以下命令以测试与本地设备的连接:ping 10.255.0.2
  • 确认 ping 成功后,测试端口连接:nc -vz 10.255.0.2 80 如果连接正常,表示本地设备与 Kubernetes 集群通过 WireGuard VPN 连接成功,可以正常通信。此时,您可以在 Open WebUI 中将 Ollama API 的地址配置为本地设备的 IP(例如 http://10.255.0.2),实现对本地 AI 模型的访问。

本地主机ollama部署配置

  • 安装 Nginx:brew install nginx
  • 创建ollama API代理配置 /opt/homebrew/etc/nginx/nginx.conf
代码语言:nginx
复制
server {
    listen 80;
    server_name ollama.svc.plus;  # 替换为您的域名
    location / {
        proxy_pass http://localhost:11434;
        proxy_set_header Host localhost:11434;
    }
}
  • 启动 Nginx bash sudo brew services start nginx
  • 验证云端Open WebUI 应用能否通过VPN 网络访问Ollama API, 执行命令:
代码语言:bash
复制
kubectl exec -t -i open-webui-0 -n open-webui -- sh
root@open-webui-0:/app/backend# curl http://10.255.0.2
Ollama is running

调整云端 Open WebUI

登录到 Open WebUI 并修改配置,确保 Ollama API 正确设置,例如 http://10.255.0.2

保存配置后,回到工作空间,验证与运行在本地的Ollama AI模型对话

关键配置说明

在配置中,AllowedIPs 参数定义了每个节点(Peer)可以路由的IP地址范围,是确保 VPN 网络和 Kubernetes Pod 网络互通的关键之一。具体来说:

  1. VPN 网络 (WireGuard VPN): 10.255.0.0/16:这是 WireGuard VPN 的地址池,指定了 VPN 网络中所有设备的地址范围。例如,10.255.0.1 是云端的 VPN 网络地址,10.255.0.2 是本地设备的 VPN 网络地址。
  2. Kubernetes Pod 网络: 10.42.0.0/16:这是 Kubernetes Pod 网络的地址池。Kubernetes 集群中的每个 Pod 都会分配到这个地址空间中的一个 IP 地址。这些地址被允许通过 VPN 进行路由,确保了从本地设备到云端 Kubernetes Pod 的通信。
  3. 通过配置 AllowedIPs = 10.255.0.0/16,10.42.0.0/16,实现了:
  • 所有 VPN 网络内的流量都可以相互访问,包括云端和本地设备
  • VPN网络中的流量可以路由到 Kubernetes Pod 网络,实现本地设备与 Kubernetes Pod 之间通过VPN网络通信。

这些配置保证了整个系统的网络互通性,使得本地的 AI 模型可以与云端的 Kubernetes Pod 无缝连接,以便有效利用本地 GPU 资源进行测试和开发。

调试和验证路由及防火墙配置

  • 使用 route 命令查看路由表
  • 在本地主机 (MacOS) 上,运行以下命令查看路由配置:netstat -rn
  • 在云端主机,运行以下命令查看路由配置:ip route
  • 在云端主机上,运行以下命令查看防火墙配置:
代码语言:bash
复制
sudo iptables -L -v -n
sudo iptables -t nat -L -v -n

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 前提条件
  • 解决思路
  • 具体步骤
    • 配置 WireGuard:
      • 本地设备 WireGuard 配置
        • 测试验证
          • 本地主机ollama部署配置
            • 调整云端 Open WebUI
              • 关键配置说明
                • 调试和验证路由及防火墙配置
                相关产品与服务
                VPN 连接
                VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档