在现代IT架构中,Kubernetes (K8s) 与 Prometheus 的组合已成为容器编排与可观测性的“黄金标准”。拥有一个自己的K8s集群,无论对于学习、开发测试,还是部署高可用应用,都很有价值。本篇K8s集群部署教程将摒弃过时的方法,为大家提供一套完整的Linux VPS搭建Kubernetes实战指南。无论您是想在主流服务器上尝试VPS部署K8s,还是寻找从零开始的完整流程,本文都会带您一步步完成核心环境的搭建,并附带详细的VPS安装Prometheus监控套件部署方案。

基于 Linux VPS 环境的 K8s 集群部署与 Prometheus 监控一体化架构演示
一、基础概念与准备工作
在正式开始部署之前,让我们先快速了解几个核心概念和需要满足的基本条件,这有助于我们更好地理解后续的每一步操作。
1. Kubernetes & Prometheus 简介
- Kubernetes (K8s):一个开源的容器编排平台,能自动化管理容器化应用的部署、扩展和运维。
- Prometheus:一款顶级的开源监控与告警系统,与Grafana结合,能提供极其强大的数据可视化能力。
2. 准备条件
- VPS服务器:至少一台。最低建议配置:2核CPU / 2GB内存(仅供最小化测试)。推荐使用像搬瓦工CN2 GIA-E或香港套餐这样拥有高性能CPU和NVMe硬盘的机器。对于打算尝试搬瓦工搭建K8s的技术朋友来说,优质的线路和底层硬件能为您带来极其流畅的控制平面体验。
- 操作系统:Ubuntu 22.04+ 或 Debian 12+。(注:如果您偏爱Debian系,KiwiVM面板现已全面支持最新版,系统安装细节可参考:搬瓦工 KiwiVM 后台上线 Debian 13:一键安装教程与 Trixie 新特性深度解析)
- 权限:拥有
sudo或root权限。 - 网络:确保服务器可以访问外网,并且(如果是多节点集群)节点之间网络互通。
3. 网络连通性自检
在集群搭建开始前,必须保证您的服务器网络畅通。如果遇到节点失联或外网不通的情况,建议先进行基础排查:新买的搬瓦工VPS如果PING不通怎么办?。只有网络健康的服务器,才能保证后续拉取镜像和Linux VPS搭建Kubernetes组件通信的顺利进行。
二、准备节点环境
在安装Kubernetes之前,我们需要对Linux系统进行一些基础配置,确保它满足K8s的运行要求。这个阶段的操作是后续所有步骤的基石,请在所有将要成为K8s节点的VPS上执行。
1. 关闭Swap分区 (K8s要求)
Kubernetes的设计理念要求内存的分配和管理是可预测的,而Swap(虚拟内存)机制会干扰调度器的决策。因此,官方强制要求在所有节点上关闭Swap。
sudo swapoff -a
# 为了永久关闭,需要注释掉/etc/fstab中的swap配置
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
虽然VPS部署K8s严格要求关闭虚拟内存,但如果您在其他非K8s服务器上遇到内存瓶颈,或者需要合理利用交换分区来缓解压力,可以参考这篇系统级管理指南:搬瓦工SWAP空间不足?教你如何安全调整/重建SWAP虚拟内存 (进阶教程)。
2. 配置内核参数与加载模块
为了让容器网络(Pod之间的通信)能够正常工作,我们需要调整一些内核参数,启用IP转发和iptables桥接功能。
sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
3. 安装Containerd容器运行时
从K8s 1.24版本开始,Docker不再是内置的容器运行时。我们遵循社区的最佳实践,安装轻量且高效的containerd作为容器的运行环境。
sudo apt-get update
sudo apt-get install -y containerd
# 生成默认配置文件
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
# 【重要】修改配置文件,启用systemd cgroup驱动
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# 重启并启用containerd
sudo systemctl restart containerd
sudo systemctl enable containerd
三、安装Kubernetes组件
环境准备就绪后,我们进入VPS部署K8s的核心环节,开始安装Kubernetes的“三剑客”:kubelet, kubeadm, kubectl。
1. 添加Kubernetes官方软件源 (2026最新方法)
为了确保能安装到官方维护的、最新版本的Kubernetes,我们需要添加其官方软件源。旧的packages.cloud.google.com源已不推荐,我们采用新的社区源pkgs.k8s.io和更安全的GPG密钥添加方法。
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
# 添加新的GPG密钥(安全方法)
sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 添加软件源
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
(注意:v1.30是示例版本,您可以根据需要替换为最新的稳定版)
2. 安装kubelet, kubeadm, kubectl
现在,我们从刚刚添加的源中,安装这三个核心组件。
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 防止自动更新造成版本错乱
四、初始化Kubernetes集群
基础组件安装完毕后,这篇K8s集群部署教程迎来了最关键的步骤:初始化集群并让主节点(Master Node)正式上线。此阶段操作仅在主节点上执行。
1. 初始化主节点
我们使用kubeadm init命令来完成集群的初始化工作。
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=registry.k8s.io
--pod-network-cidr: 为Pod网络指定地址段,后续的Flannel网络插件默认使用这个段。--image-repository: 指定使用官方社区镜像仓库registry.k8s.io,避免国内访问k8s.gcr.io可能遇到的网络问题。
初始化成功后,屏幕会输出一条kubeadm join ...的命令,请务必复制并保存好,这是将来添加其他工作节点(Worker Node)时要用的“通行证”。
2. 配置kubectl
为了能以普通用户身份管理集群,我们需要配置kubectl命令行工具的访问凭证。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. 部署网络插件 (CNI)
一个空的K8s集群,Pod之间还无法通信,需要安装网络插件(CNI)。我们以简单易用的Flannel为例。
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
4. 验证集群状态
最后,我们来检查一下集群的健康状况。
kubectl get nodes
等待几分钟,当您看到节点状态从NotReady变为Ready时,恭喜您,您的K8s集群核心已成功就绪!
(可选) 如果您是单节点集群,需要解除主节点的角色限制,使其也能运行普通应用:
kubectl taint nodes --all node-role.kubernetes.io/master- kubectl taint nodes --all node-role.kubernetes.io/control-plane-
五、部署Prometheus监控系统
现在,我们为健康的集群装上强大的“眼睛”。在云主机上进行完整的VPS安装Prometheus监控配置,能让集群的各项资源调度一目了然。使用Helm包管理器,可以极大地简化这个过程。
1. 安装Helm
Helm是Kubernetes生态系统中最流行的包管理器,如同K8s世界的apt或yum。
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
2. 部署kube-prometheus-stack
我们将安装kube-prometheus-stack,这是一个包含了Prometheus, Grafana, Alertmanager等全套监控告警组件的“全家桶”,可以一站式解决所有监控需求。
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install my-prometheus prometheus-community/kube-prometheus-stack \ --namespace monitoring --create-namespace
等待安装完成后,使用 kubectl get pods -n monitoring 查看所有监控组件的Pod是否都处于Running状态。
六、访问与使用
部署成功后,我们便可以访问监控系统的Web界面,查看我们集群的各项指标了。
1. 访问Grafana仪表盘 (可视化)
Grafana是数据可视化的核心,它能将Prometheus采集到的枯燥数据,变成炫酷直观的图表。
为了方便测试,我们先通过端口转发的方式,将服务器上的Grafana端口映射到本地访问。
# 通过端口转发临时访问
kubectl --namespace monitoring port-forward svc/my-prometheus-grafana 3000:80
现在,在您本地电脑的浏览器中访问 http://127.0.0.1:3000。
- 默认用户名:
admin - 默认密码查询方法:
kubectl --namespace monitoring get secret my-prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
登录后,您会看到大量预设好的、极其专业的仪表盘,实时展示着您K8s集群的CPU、内存、网络、磁盘等各项性能指标。
2. 公网访问的安全防护
当您成功暴露了Grafana面板或K8s API后,服务器将直接面临公网环境的复杂流量。为了保障节点长治久安,防止因异常扫描导致IP受限,建议您提前了解基础防护策略:如何避免搬瓦工IP地址被封的一些事项。做好基础安全加固,才能让您的监控系统和业务容器稳定运转。
七、总结
恭喜您!通过跟随这篇K8s集群部署教程,您已经成功掌握了Linux VPS搭建Kubernetes的完整流程。无论您是采用其他云主机,还是专门使用搬瓦工搭建K8s,这套最新的VPS部署K8s方案都能为您提供坚实的底层支撑。
同时,配合我们在结尾完成的VPS安装Prometheus监控系统,您现在已经拥有了一个生产级别的现代化容器环境,迈出了走向云原生时代的坚实一步。在挑选承载K8s或常规Web业务的底层资源时,如果您对节点规格的规划还有疑问,推荐阅读:搬瓦工搭建网站选择什么样的 VPS 配置才够使用?。
另外,标准版 K8s 对服务器资源占用较大。如果您手里正好有吃灰的低配闲置 VPS,跑不动完整的 Kubernetes,建议大家尝试更轻巧的替代方案。您可以参考这篇实战记录:K3s 安装教程:3分钟让闲置 VPS 变身轻量级 K8s 集群,体验极速部署的乐趣。结合下方我们为您整理的优质方案列表,选出最适合您的生产或测试服务器。
如果您面对众多线路不知道该怎么挑,强烈建议在对照下方表格下单前,先阅读这篇详细的选购指南:搬瓦工哪个方案好?最值得购买的VPS套餐整理与推荐。
附:搬瓦工最值得买的方案整理以下是搬瓦工目前热门且在售的VPS套餐方案,您可以根据自己的需求进行选择。
| 套餐 | CPU | 内存 | 硬盘 | 流量 | 带宽 | 机房 | 价格 | 购买 |
|---|---|---|---|---|---|---|---|---|
| KVM常规线路 | 2核 | 1GB | 20GB | 1TB | 1Gbps | DC2 AO DC8 ZNET 等9个机房 | $49.99/年 最便宜 | 购买 |
| KVM常规线路 | 3核 | 2GB | 40GB | 2TB | 1Gbps | $52.99/半年 $99.99/年 | 购买 | |
| CN2 GIA-E 最推荐 | 2核 | 1GB | 20GB | 1TB | 2.5Gbps | DC6 CN2GIA DC9 CN2GIA 日本软银 圣何塞CN2GIA 加拿大CN2GIA 等15个机房 | $49.99/季度 $169.99/年 | 购买 |
| CN2 GIA-E | 3核 | 2GB | 40GB | 2TB | 2.5Gbps | $89.99/季度 $299.99/年 | 购买 | |
| 香港(HKHK_8) 高端首选 | 2核 | 2GB | 40GB | 0.5TB | 2.5Gbps | 中国香港 日本东京 日本大阪 新加坡 等15个机房 | $89.99/月 $899.99/年 | 购买 |
| 香港(HKHK_8) | 4核 | 4GB | 80GB | 1TB | 2.5Gbps | $155.99/月 $1559.99/年 | 购买 | |
| 东京(JPTYO_8) | 2核 | 2GB | 40GB | 0.5TB | 1.2Gbps | 中国香港 日本东京 日本大阪 新加坡 等15个机房 | $89.99/月 $899.99/年 | 购买 |
| 东京(JPTYO_8) | 4核 | 4GB | 80GB | 1TB | 1.2Gbps | $155.99/月 $1559.99/年 | 购买 | |
| 大阪(JPOS_6) | 2核 | 2GB | 40GB | 0.5TB | 1.5Gbps | 大阪[JPOS_6] DC6 CN2GIA DC9 CN2GIA 香港[HKHK_3] 荷兰[EUNL_9] 等19个机房 | $49.99/月 $499.99/年 | 购买 |
| 大阪(JPOS_6) | 4核 | 4GB | 80GB | 1TB | 1.5Gbps | $86.99/月 $869.99/年 | 购买 | |
| 阿联酋迪拜 | 2核 | 1GB | 20GB | 0.5TB | 1Gbps | DC6 CN2GIA DC9 CN2GIA 日本软银 圣何塞CN2GIA 加拿大CN2GIA 等15个机房 | $19.99/月 $169.99/年 | 购买 |
| 阿联酋迪拜 | 3核 | 2GB | 40GB | 1TB | 1Gbps | $32.99/月 $299.99/年 | 购买 | |
|
||||||||
搬瓦工