游客
2026云服务器Kubernetes集群部署必看

2026云服务器Kubernetes集群部署必看

一言准备中...

云服务器上从零搭一套Kubernetes集群,踩过的坑都给你标出来了

单机 Docker 跑几个容器,一开始挺爽。等到要滚动更新、某个服务挂了想自动拉起、流量上来了想多开几个实例时,你就开始手忙脚乱了。这时候大概率会想到 K8s,然后打开教程一看——全是本地虚拟机、三台 VMware、直接连内网 IP,照搬到云服务器上,第一步就卡在节点之间 ping 不通。这篇文章就是写给国内站长和中小团队看的:教你在云服务器上用 kubeadm 搭一套能用的三节点集群,顺带把选购配置和几个高频坑说清楚。不需要你是运维老手,会点 Linux 基本命令就行。

第一步:买机器,别一上来就抠配置

最少三台。一台 Master(控制面),两台 Worker(跑业务)。配置建议 2核4G 起步,Master 别用 2G 内存,kube-apiserver 和 etcd 稳住阵脚就要吃掉一截,2G 容易在初始化时直接 OOM,别问我是怎么知道的。

买的时候注意三点:同一地域、同一可用区、走内网互通。云厂商同账号同地域的机器一般内网自动通,但你要确认安全组放行了这些端口:

  • Master:6443(API Server)、2379-2380(etcd)
  • 所有节点:10250(kubelet)、30000-32767(NodePort 服务)
  • Calico 网络插件:UDP 4789(VXLAN),如果用 IPIP 模式还要放行协议号 4

系统选 Ubuntu 22.04 或 CentOS Stream 9 都行,干净的最小安装最好,别用带宝塔面板的镜像,你会在后面被各种莫名其妙的 iptables 规则搞到怀疑人生。

第二步:三台机器统一做系统初始化

三台都执行,一步都别省:

# 1. 主机名(每台不同:k8s-master / k8s-node1 / k8s-node2)
hostnamectl set-hostname k8s-master

# 2. hosts 互相解析,用内网 IP
cat >> /etc/hosts <<EOF
10.0.0.11 k8s-master
10.0.0.12 k8s-node1
10.0.0.13 k8s-node2
EOF

# 3. 关 swap(K8s 强制要求,不关 kubelet 起不来)
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 4. 时间同步,证书校验高度依赖时间
apt install -y chrony && systemctl enable --now chrony   # CentOS 用 yum

# 5. 内核参数
cat >> /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
modprobe br_netfilter && sysctl --system

然后装容器运行时。新版 K8s 已经不支持 Docker 了,用 containerd:

apt install -y containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 关键:把 SystemdCgroup 改成 true,否则集群初始化会报错
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd

第三步:装 kubeadm、kubelet、kubectl

国内直连 Google 源基本没戏,加阿里云源:

curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/Release.key | \
  gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] \
  https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/ /" > /etc/apt/sources.list.d/kubernetes.list
apt update && apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl   # 锁版本,不然哪天自动升级集群就炸了

第四步:初始化 Master,装网络插件

在 Master 上执行,注意把 IP 换成你自己的内网 IP,镜像仓库用阿里云:

kubeadm init \
  --apiserver-advertise-address=10.0.0.11 \
  --image-repository registry.aliyuncs.com/google_containers \
  --pod-network-cidr=192.168.0.0/16 \
  --kubernetes-version=v1.29.0

成功后按提示配置 kubectl:

mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config

然后装 Calico(网络不通,Pod 之间没法通信):

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml

这个 yaml 国内可能拉不动,拉不到就本地下载后上传,或者把里面的镜像地址换成 registry.cn-hangzhou.aliyuncs.com 前缀。

第五步:加入节点,跑个应用验证

在 Node 上执行 Master 初始化完打印出来的 kubeadm join ... 命令,等几十秒,回 Master 跑 kubectl get nodes,三台都是 Ready 就成功了。

跑个 Nginx 试试:

kubectl create deployment web --image=nginx:alpine --replicas=2
kubectl expose deployment web --port=80 --type=NodePort
kubectl get svc web

用 节点公网IP:NodePort 能打开页面,说明整套链路是通的。

避坑提醒:新手最容易栽的三个地方

第一,只买一台机器硬装集群,然后 Pod 调度不上去——因为 Master 默认带污点不接受业务 Pod,得自己删掉 taint 才行。第二,安全组只放了 22 和 80,结果 join 时一直超时,排查半天以为是网络问题。第三,忘了关 swap 或者忘了锁 kubelet 版本,前者导致 kubelet 反复重启,后者某次 apt upgrade 之后集群直接不认节点了。别笑,这三个我都见过,包括我自己。

机器选谁家:推荐一个省心的选项

搭 K8s 对机器的要求其实不高,但要的是稳定内网、够用的带宽、不被莫名其妙攻击打断。这里推荐下沐雨云服务器:提供高防云服务器,单机 50-200G DDoS/CC 防御,跑 K8s 最怕被人打流量,有这层防护心里踏实;香港/美国/日本免备案 VPS,采用 BGP/CN2 优质线路,纯 SSD 固态硬盘,跨地域组集群或者做边缘节点都合适。入门款 2核2G 轻量云 12.8 元/月起,先拿来练手或者搭个小集群完全够,支持支付宝/微信付款,适合个人博客、电商网站、游戏服务器、外贸独立站这些场景。

最后回顾一下要点

  • 三台起步,同地域同可用区,2核4G 打底,安全组端口别漏
  • 关 swap、同步时间、调内核参数,三台一个都不能少
  • 用 containerd 不用 Docker,SystemdCgroup 记得改 true
  • 镜像走阿里云仓库,kubelet 版本记得 hold 住
  • 装完必须上网络插件,Calico 或 Flannel 二选一

照着走一遍,一个下午基本能跑起来。剩下的,就是在上面慢慢折腾你的业务了。

  • 本文作者:站长
  • 本文链接: https://www.zhujishice.cn/vpszs/785.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
576
0
0
0
内卷太严重,已躺平...

2026云服务器Docker安装教程:新手避坑

上一篇

2026云服务器监控告警怎么设置?3步搞定!

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单