VPS服务器K8s 1.27单节点安装:网络配置详解
文章分类:售后支持 /
创建时间:2025-09-27
在VPS服务器上搭建Kubernetes(K8s)1.27单节点集群时,网络配置直接影响集群通信稳定性。去年帮客户部署时,曾遇到因IP转发未开启导致Pod间无法通信的问题,花了3小时排查才定位到根源。这让我深刻意识到,掌握K8s网络配置细节对VPS服务器运维至关重要。接下来结合实战经验,详解从准备到验证的全流程操作。
前置准备:扫清网络通信障碍
某电商客户曾反馈K8s组件启动失败,检查发现是防火墙拦截了6443(API Server)和2379(ETCD)端口流量。这提醒我们,VPS服务器的基础环境必须提前处理。
关闭干扰服务
CentOS系统默认启用firewalld和SELinux,需先关闭:
停止并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
临时关闭SELinux并永久设置为宽容模式
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
注意:生产环境建议通过firewalld开放特定端口(如6443、2379、10250),但单节点测试可直接关闭简化操作。
启用IP转发与桥接规则
K8s需要跨容器网络通信,必须开启IP转发和桥接过滤:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
sysctl -p # 立即生效
之前有新手漏掉`sysctl -p`,导致配置未生效,集群始终无法通信。
核心配置:构建集群网络基石
完成基础准备后,重点是为K8s安装容器网络接口(CNI)插件并配置节点参数。
安装Calico网络插件
Calico是K8s主流CNI插件,支持IPIP隧道和BGP路由。以v3.25.0版本为例:
下载官方配置文件
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml -O
修改IP池(可选):若VPS服务器内网IP段为10.0.0.0/8,需调整CALICO_IPV4POOL_CIDR
sed -i 's|192.168.0.0/16|10.0.0.0/16|' calico.yaml
应用配置
kubectl apply -f calico.yaml
曾遇到用户未调整IP池导致Pod IP与VPS内网冲突,最终通过修改CIDR解决。
配置Kubelet节点IP
Kubelet需明确节点IP,避免因多网卡(如公网+内网)导致通信异常。编辑`/etc/sysconfig/kubelet`:
KUBELET_EXTRA_ARGS="--node-ip=192.168.1.100" # 替换为VPS服务器实际内网IP
修改后重启服务:
systemctl restart kubelet
效果验证:确保网络链路畅通
配置完成后,通过两步验证网络是否正常。
检查插件运行状态
Calico组件需全部Running:
kubectl get pods -n calico-system
正常输出类似:
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-6768468f4d-5z4z8 1/1 Running 0 5m
calico-node-74z2v 1/1 Running 0 5m
测试Pod间通信
创建Nginx测试Pod:
kubectl run nginx-test --image=nginx:alpine
待Pod状态为Running后,查看其IP:
kubectl get pods -o wide
输出示例:
NAME READY STATUS RESTARTS AGE IP NODE
nginx-test 1/1 Running 0 2m 10.244.0.2 vps-node
进入Pod内部ping集群DNS(CoreDNS默认IP为10.96.0.10):
kubectl exec -it nginx-test -- ping 10.96.0.10
若能收到回复,说明网络配置成功。
在VPS服务器上部署K8s 1.27单节点集群时,网络配置是连接各组件的“神经脉络”。从关闭干扰服务到验证通信链路,每个步骤都需细致处理。掌握这些操作后,不仅能快速搭建可用集群,更能在遇到网络问题时精准定位,确保业务稳定运行。