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

基于 Linux VPS 环境的 K8s 集群部署与 Prometheus 监控一体化架构演示
一、K8s 集群基础架构与 VPS 部署准备
在正式开始部署之前,让我们先快速了解几个核心概念和需要满足的基本条件,这有助于我们更好的理解后续的每一步操作。
1. 核心组件解析:Kubernetes 与 Prometheus
在正式敲下第一行部署命令之前,我们有必要先认识一下支撑现代云原生架构的两位“主角”。
Kubernetes 负责将散落的计算资源聚合成一个强大的平台,自动化地调度和管理您的应用容器;而 Prometheus 则像是为这个集群装上了一副“透视眼镜”,全天候监控资源消耗与服务健康度。
理解它们各自的分工,不仅能帮您分清整个架构的脉络,更是后续在独立 VPS 上顺畅排错的基础。
- Kubernetes (K8s):一个开源的容器编排平台,能自动化管理容器化应用的部署、扩展和运维。
- Prometheus:一款顶级的开源监控与告警系统,与 Grafana 结合,能提供强大的数据可视化能力。
2. 硬件与系统要求 (VPS 规格选型建议)
强大的架构往往伴随着对底层算力的考验,运行一套包含完整可观测性的 K8s 集群,对服务器的 CPU 和内存都有着严格的底线要求。
盲目在低配 VPS 上强行拉起所有组件,极易导致节点因内存溢出(OOM)而频繁宕机,在这一节中,本站将为您整理出最适合承载控制平面与监控栈的 VPS 配置基准,并明确兼容的最佳 Linux 发行版,帮您在采购或规划节点时避开性能瓶颈。
- VPS服务器:至少一台。最低建议配置:2核CPU / 2GB内存(仅供最小化测试)。推荐使用像搬瓦工 CN2 GIA-E 或香港套餐这样拥有高性能 CPU 和 NVMe 硬盘的VPS。对于打算尝试搬瓦工搭建 K8s 的技术朋友来说,优质的线路和底层硬件能为您带来极其流畅的控制平面体验。
- 操作系统:Ubuntu 22.04+ 或 Debian 12+。(注:如果您偏爱 Debian 系,搬瓦工后台的 KiwiVM 面板现已全面支持最新版,系统安装细节可参考:搬瓦工 KiwiVM 后台上线 Debian 13:一键安装教程与 Trixie 新特性深度解析)
- 权限:拥有
sudo或root权限。 - 网络:确保服务器可以访问外网,并且(如果是多节点集群)节点之间网络互通。
3. 节点网络连通性与基础环境自检
在集群搭建开始前,必须保证您的服务器网络畅通,如果遇到节点失联或外网不通的情况,建议先进行基础排查:新买的搬瓦工 VPS 如果 PING 不通怎么办?。
只有网络健康的服务器,才能保证后续拉取镜像和 Linux VPS 搭建 Kubernetes 组件通信的顺利进行。
二、Linux VPS 节点环境初始化
在安装 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 官方软件源
为了确保能安装到官方维护的、最新版本的 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 初始化集群主节点
我们使用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. 部署 Flannel 网络插件 (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-
到这一步,您已经拥有了一个强大的底层容器环境,除了承载常规的 Web 业务,这种高性能的节点也非常适合用来部署当下吃配置的 AI 应用。如果您对搭建私有化 AI 引擎感兴趣,不妨在这个集群基础上看看这篇:VPS 部署 Dify 教程 在搬瓦工搭建个人的 AI 平台,把服务器的算力彻底发挥出来。
五、构建可观测性: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 地址被封的一些事项,做好基础安全加固,才能让您的监控系统和业务容器稳定运转。
七、部署总结与轻量化 (K3s) 替代方案推荐
恭喜您!通过跟随这篇 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/年 | 购买 | |
|
||||||||
搬瓦工