2、环境准备:安装kubectl、安装minikube、启动本地K8s集群、验证集群状态
好,咱们正式开始动手了。这一章的目标很明确——在你的本地机器上搭出一个能跑vLLM的Kubernetes环境。说白了,就是先把“舞台”搭好。
我个人习惯把环境准备分成四步走:装kubectl、装minikube、启动集群、验证集群。每一步都不难,但细节挺多。我刚开始接触K8s时,光装个集群就折腾了一下午,后来发现全是小坑。今天咱们把这些坑提前填上。
2.1 安装kubectl——你的K8s遥控器
kubectl是Kubernetes的命令行工具。你可以把它理解成“遥控器”,所有对集群的操作都靠它发号施令。
安装方式(Linux/Mac/WSL)
# 下载最新稳定版
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 赋予执行权限
chmod +x kubectl
# 移动到PATH目录
sudo mv kubectl /usr/local/bin/
# 验证安装
kubectl version --client
brew install kubectl。Windows用户可以用choco或直接下载exe。我个人偏爱Linux,毕竟生产环境也大多是Linux。
安装完后,记得验证一下版本。输出里能看到client版本信息,说明装好了。
Client Version: v1.28.3
Kustomize Version: v5.0.4
2.2 安装minikube——本地集群的“迷你版”
minikube是什么?它能在你本地跑一个单节点的K8s集群。说白了,就是把生产环境“压缩”到你的笔记本里。对于学习和测试vLLM部署,它完全够用。
安装步骤
# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Mac
brew install minikube
# Windows(用管理员PowerShell)
choco install minikube
安装完成后,跑一下minikube version确认。
minikube version: v1.32.0
2.3 启动本地K8s集群
这一步最激动人心——见证奇迹的时刻。
# 启动集群(默认使用Docker驱动)
minikube start
# 如果你有足够资源,可以指定更多CPU和内存
minikube start --cpus=4 --memory=8192
为什么会推荐分配更多资源?因为vLLM跑大模型时,显存和内存消耗都不小。我建议至少给minikube分配4核CPU和8GB内存,否则后面跑模型时可能会卡死。
启动过程大概1-3分钟。你会看到类似这样的输出:
😄 minikube v1.32.0 on Ubuntu 22.04
✨ Using the docker driver based on existing profile
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
🔥 Creating docker container (CPUs=4, Memory=8192MB) ...
🐳 Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...
🔗 Configuring bridge CNI (Container Networking Interface) ...
🌟 Enabled addons: storage-provisioner, default-storageclass
💡 kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄 Done! kubectl is now configured to use "minikube" cluster
看到那个“Done!”了吗?集群已经跑起来了。minikube会自动配置kubectl的上下文,所以接下来你直接敲kubectl命令就能操作这个集群。
2.4 验证集群状态
集群启动后,别急着部署vLLM。先做几个基本检查,确保一切正常。
检查节点状态
kubectl get nodes
输出应该类似:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 2m v1.28.3
STATUS是Ready,说明节点正常。如果显示NotReady,多半是网络插件没装好,可以试试minikube delete再重新minikube start。
检查系统Pod
kubectl get pods -n kube-system
你会看到coredns、etcd、kube-apiserver等核心组件。它们都应该处于Running状态。
NAME READY STATUS RESTARTS AGE
coredns-5dd5756b68-7g8q9 1/1 Running 0 3m
etcd-minikube 1/1 Running 0 3m
kube-apiserver-minikube 1/1 Running 0 3m
kube-controller-manager-minikube 1/1 Running 0 3m
kube-proxy-xxxxx 1/1 Running 0 3m
kube-scheduler-minikube 1/1 Running 0 3m
storage-provisioner 1/1 Running 0 3m
检查集群信息
kubectl cluster-info
输出会显示控制面地址和CoreDNS地址。只要没有报错,就说明集群通信正常。
- ✅ kubectl version --client 正常
- ✅ minikube version 正常
- ✅ kubectl get nodes 显示Ready
- ✅ kubectl get pods -n kube-system 全部Running
- ✅ kubectl cluster-info 无报错
本章知识体系
下面这张图帮你理清环境准备的整体逻辑:
好了,到这里你的本地K8s集群已经准备就绪。下一章咱们就可以开始往集群里部署vLLM了。记住,环境准备是基础中的基础,别嫌麻烦。把这一步走稳了,后面会顺畅很多。
公众号:蓝海资料掘金营,微信deep3321