VPS服务器搭建K8s集群实战全流程指南
文章分类:技术文档 /
创建时间:2025-09-10
想低成本搭建Kubernetes集群?用VPS服务器是灵活又经济的选择。相比云主机套餐,VPS资源更自主可控;比起物理机,成本又低了不止一个量级。最近刚帮朋友用3台VPS搭了套K8s集群,实测跑微服务应用稳稳的。今天就把从准备到验证的全流程掏出来,新手也能跟着操作。
准备阶段:3台VPS的"分工"与"体检"
搭建K8s集群至少需要3台VPS——1台当主节点(Master)管调度,2台做工作节点(Worker)跑容器。配置别太抠:主节点建议2核4G(毕竟要管全局),工作节点1核2G够用;系统选Ubuntu 20.04 LTS,亲测对K8s组件兼容性最稳,装插件时能少踩80%的版本冲突坑。
关键一步是"体检":所有VPS得互相ping通,外网访问也要顺畅——后面装Docker、拉K8s镜像都得连外网。之前有朋友踩过坑,主节点能连外网但工作节点不行,结果装插件卡了半宿。
第一步:给所有VPS装"容器引擎"Docker
K8s跑容器得靠容器运行时,Docker是最常用的选择。所有VPS都要装,命令走一波:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
装完记得启动并设开机自启:
sudo systemctl start docker
sudo systemctl enable docker
(小提示:如果执行报错,先检查是否开了防火墙,把2375/2376端口放通就行)
第二步:装K8s三兄弟kubeadm、kubelet、kubectl
这三个组件是K8s的"核心三件套":kubeadm负责集群初始化,kubelet管节点运行,kubectl是命令行工具。所有VPS都要装,命令如下:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本防止自动更新
主节点初始化:生成集群"身份证"
到主节点执行初始化命令,这里要指定Pod网络的CIDR(Flannel插件需要):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
跑完命令会输出一堆关键信息,尤其是"kubeadm join"开头的加入命令——这是工作节点的"入场券",一定要复制保存好(建议直接存到备忘录,我上次就因为没及时保存重来了一遍)。
接着配置kubectl,让命令行工具能管集群:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
装网络插件:让Pod能"互相打电话"
K8s集群里的Pod得能互相通信,这时候需要网络插件。选Flannel是因为配置简单,主节点执行:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等几分钟,用"kubectl get pods -n kube-system"检查,看到flannel的Pod状态是Running就成。
工作节点加入:集群"组队完成"
回到之前保存的"kubeadm join"命令,到每个工作节点执行(示例命令):
sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash>
注意替换成自己主节点的IP、端口、token和hash值。
最后验证:检查集群"健康度"
主节点执行"kubectl get nodes",如果看到所有节点状态都是Ready,恭喜——你的VPS K8s集群搭成功了!
这套流程下来,用VPS搭K8s集群其实没想象中难。关键是准备阶段的网络检查和保存加入命令,我第一次搭就是因为漏了保存命令,多花了半小时重初始化。现在朋友的微服务应用跑在这套集群上,扩容缩容都很灵活,成本比云主机套餐省了30%。如果需要搭K8s集群,不妨试试用VPS,亲测香!
下一篇: VPS服务器购买与网站搭建实用指南