本文旨在指导如何使用 WireGuard 技术打通本地 AI 模型和云端 Kubernetes 集群之间的连接,以有效利用本地 GPU 资源进行测试和开发,避免云 GPU 实例的高成本。
汇总如下
系统 | 系统 | 应用负载 |
---|---|---|
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 |
为实现上述目标,我们将采取以下步骤:
[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
[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
# 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
kubectl exec -t -i alpine-tools -- sh
server {
listen 80;
server_name ollama.svc.plus; # 替换为您的域名
location / {
proxy_pass http://localhost:11434;
proxy_set_header Host localhost:11434;
}
}
bash sudo brew services start nginx
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 并修改配置,确保 Ollama API 正确设置,例如 http://10.255.0.2
保存配置后,回到工作空间,验证与运行在本地的Ollama AI模型对话
在配置中,AllowedIPs 参数定义了每个节点(Peer)可以路由的IP地址范围,是确保 VPN 网络和 Kubernetes Pod 网络互通的关键之一。具体来说:
这些配置保证了整个系统的网络互通性,使得本地的 AI 模型可以与云端的 Kubernetes Pod 无缝连接,以便有效利用本地 GPU 资源进行测试和开发。
sudo iptables -L -v -n
sudo iptables -t nat -L -v -n
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。