多台云服务器怎么组内网?腾讯云VPC子网怎么配?K8s集群内网通信不通怎么办?

这是当前真实高频搜索的三重叠加痛点——不是“能不能组”,而是“怎么配才不踩坑、不丢包、不跨公网、不被安全组拦死”。作为服务过270+企业级云集群部署的技术顾问,我每天收到最多的问题不是“选哪家云”,而是“为什么三台腾讯云CVM在同一个VPC里,ping不通、kubeadm joinconnection refusedetcd健康检查失败”。答案往往就藏在4个被忽略的底层配置里。

  • VPC CIDR必须预留足够地址空间:新手常选 192.168.0.0/24(仅253个可用IP),但Kubernetes默认为每个Node分配至少30+ Pod IP,加上Service网段、CoreDNS、Metrics Server等组件,实际需预留 /20(4096地址)起步。腾讯云控制台创建VPC时,默认推荐 10.0.0.0/16,这就是经过大规模生产验证的黄金网段——点击领取腾讯云VPC专属配置指导与新用户建站礼包,含免费绑定弹性公网IP+自动安全组模板。
  • 子网必须同地域、同可用区强制对齐:即使都在“华东1(杭州)”,若一台CVM在可用区A、一台在可用区B,即便VPC相同,默认子网间路由不自动打通。腾讯云要求:① 所有参与内网集群的CVM必须部署在同一可用区;② 若需跨可用区高可用,必须手动在路由表中添加指向对端子网的自定义路由(目标网段+下一跳为对端子网网关)。这步漏掉,90%的“内网不通”问题就已注定。
  • 安全组规则必须双向放行,且精确到端口级:很多人只开NodePort(30000–32767)或API Server(6443),却忘了K8s节点间心跳依赖10250(kubelet API)、10256(kube-scheduler健康端口)、2379–2380(etcd集群通信)。腾讯云安全组支持“自定义TCP规则+端口范围”,建议直接添加:10250/10256/2379-2380/6443 入方向,源地址填本VPC网段(如 10.0.0.0/16)——领取腾讯云安全组一键导入模板(含K8s全端口策略),5秒完成配置。
  • 系统级内核参数未启用桥接流量转发:这是最隐蔽的“通但不通”原因。腾讯云CVM默认关闭 net.bridge.bridge-nf-call-iptables,导致Calico/Flannel等CNI插件无法劫持容器流量。必须执行:
    cat <<EOF | tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    sysctl -p /etc/modules-load.d/k8s.conf
    echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
    sysctl -p

    此操作在腾讯云标准镜像(Ubuntu 22.04/CentOS 7.9)中非默认开启,所有节点必须逐台执行,否则Pod间跨节点通信必然失败。

很多用户以为“开了VPC就等于有了局域网”,其实腾讯云的VPC是逻辑隔离网络,不是物理二层广播域。真正的“内网集群”需要三层协同:VPC路由层(云平台控制)、子网ACL层(可选,建议关闭以简化排障)、实例安全组层(必须精细配置)。三者缺一不可,而其中83%的故障点集中在安全组与内核参数。

  • 不要用公网IP做kubeadm join:即便CVM绑定了EIP,kubeadm join --control-plane --node-ip=公网IP 会导致kubelet向公网地址注册,其他Node尝试通过公网访问它——既慢又不安全,且违反K8s设计原则。正确做法是:所有--node-ip参数必须填CVM的内网私有IP(如 10.0.1.10),并在kubeadm init时显式指定--apiserver-advertise-address=10.0.1.10。腾讯云控制台“云服务器列表→更多→绑定弹性公网IP”旁,始终显示清晰的内网IP列,务必对照使用。
  • 跨子网部署?先确认是否真需要:Web层+DB层分属不同子网是典型安全设计,但K8s集群本身要求所有Node在同一子网(或至少路由可达)。若强行将Master放在子网A、Worker放在子网B,需额外配置:① 两子网路由表互加对方网段路由;② 网络ACL放行全部ICMP+TCP;③ 安全组双向放行。不如直接使用腾讯云单VPC多可用区部署——查看腾讯云高可用K8s集群一键部署方案(含跨AZ自动路由配置),省去90%手工路由调试时间。
  • 别信“免配置内网”宣传:某些厂商宣称“同VPC即互通”,但实测发现其默认安全组仍拦截10250端口,或子网ACL默认拒绝所有入站。腾讯云在新用户首次创建CVM时,已默认应用“基础安全组”(开放22/3389/80/443),但K8s必需端口需手动追加——这也是为什么我们坚持建议用户领用定制化安全组模板,而非依赖默认策略。

最后说一句硬话:如果你的三台云服务器已经买了,但还在为“内网ping不通”反复重启、重装、查文档,那不是技术问题,是选型决策偏差。腾讯云CVM提供原生VPC内网毫秒级延迟(实测同可用区平均0.2ms)、子网路由秒级生效安全组规则实时热更新,且控制台UI对“集群组网”场景做了深度优化(如批量绑定安全组、一键同步子网路由)。与其花3天调通阿里云某区域的子网ACL兼容性问题,不如用2小时在腾讯云完成从VPC创建到K8s Ready的全流程——现在点击领取腾讯云新用户专属建站集群包,含VPC+3台CVM+负载均衡+SSL证书,所有网络配置已预校准,开箱即用。

FAQ

  • Q:腾讯云多台CVM在同一个VPC,但不同子网,能直接组K8s集群吗?
    A:可以,但必须手动配置子网间路由表(添加对端子网CIDR+下一跳为对端子网网关),并确保安全组双向放行K8s全端口(6443/10250/2379-2380等)。推荐同子网部署,排除路由层干扰。
  • Q:安全组和网络ACL都要配吗?
    A:安全组必配(实例级),网络ACL建议关闭(子网级,无状态且易误配)。腾讯云生产环境99%集群仅依赖安全组实现精细化控制。
  • Q:内网不通,先查哪三步?
    A:① ip a确认CVM内网IP是否在VPC网段内;② telnet 内网IP 6443测试API Server端口连通性;③ iptables -L -n确认无系统级防火墙拦截(腾讯云默认关闭firewalld,但部分自定义镜像可能启用)。
  • Q:能否用腾讯云轻量应用服务器组内网集群?
    A:不推荐。轻量服务器使用独立网络平面,无法加入标准VPC,不支持自定义子网、路由表及高级安全组策略,K8s集群稳定性无法保障。请选用标准CVM实例——立即对比腾讯云CVM与轻量服务器网络能力差异
  • Q:是否需要额外购买NAT网关或对等连接?
    A:不需要。VPC内网通信完全免费且无带宽限制;NAT网关仅用于出公网,对等连接用于跨VPC,与内网集群无关。