4. 环境准备:安装 kubectl、配置 K8s 集群、安装 Helm
好,咱们正式开始动手了。
这一章,说白了就是搭台子。你想想看,后面所有的 vLLM 推理任务,都得跑在 K8s 上。台子搭不好,后面全是坑。我见过太多人,模型还没跑起来,先被环境折腾得想摔键盘。
所以,咱们一步步来。把 kubectl、K8s 集群、Helm 这三样东西搞定。嗯,这里要注意,顺序别搞反了。
4.1 安装 kubectl:你的 K8s 遥控器
kubectl 是什么?就是你和 K8s 集群对话的命令行工具。没有它,你连集群里跑着啥都看不到。
我个人习惯,装完系统第一件事就是装 kubectl。为什么?因为后面配集群、装 Helm,全得靠它。
核心原则:kubectl 的版本,最好和你的 K8s 集群版本相差不超过一个次要版本。比如集群是 1.28,kubectl 用 1.27、1.28 或 1.29 都行。差太多会出怪问题。
安装方式很简单,我直接给命令:
# Linux / macOS (用 curl 下载)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 验证安装
kubectl version --client
Windows 用户呢?用 Chocolatey 或者直接下载 exe 都行。我个人建议用 Chocolatey,省事:
choco install kubernetes-cli
小技巧:装完后,记得配一下命令补全。我每次在新机器上配环境,第一件事就是敲 source <(kubectl completion bash)。Tab 键按起来,效率翻倍。
4.2 配置 K8s 集群:Minikube 还是云厂商?
集群怎么选?这得看你的场景。
如果你只是本地学习、测试,Minikube 足够了。它能在你笔记本上跑一个单节点的 K8s 集群。我刚开始学 K8s 的时候,就是在 Minikube 上折腾的。虽然功能有限,但核心概念全都有。
如果你要搞生产环境,或者需要 GPU 跑 vLLM,那还是得上云厂商的托管集群,比如 EKS、AKS、GKE。为什么?因为 Minikube 对 GPU 的支持,说实话,有点折腾。
4.2.1 方案一:Minikube(本地学习首选)
安装 Minikube 也很直接:
# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群(默认用 Docker 驱动)
minikube start --cpus=4 --memory=8192
# 检查状态
minikube status
启动后,kubectl 会自动连上这个集群。你可以试试:
kubectl get nodes
看到有个叫 minikube 的节点,就说明成功了。
注意:Minikube 默认用 Docker 驱动。如果你用的是 Windows 或 macOS,建议先装好 Docker Desktop。我曾经遇到过因为 Docker 没启动,Minikube 卡在 Starting 界面半小时的情况……嗯,从那以后我每次启动前都会先检查 Docker 是否在运行。
4.2.2 方案二:云厂商托管集群(生产环境推荐)
以 AWS EKS 为例,流程大概是:
- 在 AWS 控制台创建 EKS 集群
- 配置 IAM 权限和 VPC
- 用
aws eks update-kubeconfig生成 kubeconfig 文件
命令示例:
aws eks update-kubeconfig --region us-west-2 --name my-vllm-cluster
之后,你的 kubectl 就能连上云上的集群了。我个人习惯,会在 ~/.kube/config 里配多个上下文,方便切换:
kubectl config get-contexts
kubectl config use-context my-eks-cluster
避坑指南:我曾经在配置 EKS 时,忘了给节点角色挂载正确的 IAM 策略,结果节点一直无法注册到集群。排查了半天才发现是权限问题。所以,创建集群时,一定要仔细检查节点角色的权限。
4.3 安装 Helm:K8s 的包管理器
Helm 是什么?你可以把它想象成 apt-get 或 yum,但它是给 K8s 用的。后面部署 vLLM,我们大概率会用 Helm Chart 来管理。
安装 Helm 也很简单:
# Linux / macOS
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# 验证
helm version
Windows 用户同样可以用 Chocolatey:
choco install kubernetes-helm
装完后,记得添加常用的 Chart 仓库。比如后面我们要用的 vLLM 官方仓库:
helm repo add vllm https://vllm-project.github.io/helm-charts
helm repo update
核心概念:Helm 用 Chart 来打包 K8s 资源。一个 Chart 里可以包含 Deployment、Service、ConfigMap 等。你只需要改几个 values 参数,就能部署一套完整的 vLLM 推理服务。说白了,就是模板化部署。
4.4 本章知识体系
为了让你更直观地理解这三者的关系,我画了一张图:
4.5 验证环境
装完这些,怎么知道环境是不是好的?我一般会跑几个快速检查:
# 1. 检查 kubectl 版本
kubectl version --client
# 2. 检查集群节点
kubectl get nodes
# 3. 检查 Helm 版本
helm version
# 4. 检查 Helm 仓库
helm repo list
如果每一步都返回正常信息,恭喜你,环境准备好了。
个人经验:我习惯在 ~/.bashrc 里加几个别名,比如 alias k=kubectl,alias kgn='kubectl get nodes'。少敲几个字母,心情都会好很多。
好,环境搭好了。后面我们就可以开始真正部署 vLLM 了。
公众号:蓝海资料掘金营,微信deep3321