在配置Kubernetes网络前,需完成以下基础环境设置,确保集群节点间通信正常:
systemctl stop firewalld && systemctl disable firewalld # 关闭防火墙 setenforce 0 # 临时关闭SELinux sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭SELinux swapoff -a # 临时禁用 sed -i '/swap/s//#/' /etc/fstab # 永久禁用 /etc/sysconfig/network-scripts/ifcfg-ens33(网卡名以实际为准):TYPE=Ethernet BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 # 节点IP NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 网关 DNS1=8.8.8.8 # DNS 重启网络服务生效:systemctl restart network。chrony同步时间,避免因时间差导致集群问题:yum install chrony -y systemctl enable chronyd --now 确保已安装kubelet、kubeadm、kubectl(版本需一致):
yum install -y kubelet kubeadm kubectl systemctl enable kubelet --now 使用kubeadm初始化集群时,需指定Pod网络的CIDR范围(后续网络插件需匹配此范围):
kubeadm init --pod-network-cidr=10.244.0.0/16 # Flannel默认CIDR,若用Calico可改为192.168.0.0/16 初始化完成后,配置kubectl访问集群:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Kubernetes需通过CNI插件实现Pod网络,常见插件及部署步骤如下:
Flannel通过overlay网络实现Pod通信,不支持网络策略:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 验证插件状态:
kubectl get pods -n kube-system # 查看Flannel Pod是否Running Calico提供细粒度的网络策略控制,适合生产环境:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 验证插件状态:
kubectl get pods -n kube-system | grep calico # 查看Calico Pod是否Running Weave Net部署简单,支持自动加密:
kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 tr -d '\n') kubectl run nginx1 --image=nginx --port=80 kubectl run nginx2 --image=nginx --port=80 kubectl get pods -o wide # 查看Pod IP nginx1 Pod,ping nginx2的IP:kubectl exec -it nginx1 -- /bin/sh ping <nginx2的IP> 若能ping通,说明Pod网络配置成功。若使用Calico,可通过NetworkPolicy限制Pod间流量,例如:仅允许default命名空间内nginx Pod访问redis Pod:
apiVersion: projectcalico.org/v3 kind: NetworkPolicy metadata: name: allow-nginx-to-redis namespace: default spec: selector: app == 'redis' ingress: - from: - namespaceSelector: name == 'default' podSelector: app == 'nginx' ports: - protocol: TCP port: 6379 应用策略:
kubectl apply -f network-policy.yaml kubectl get pods -n kube-system);确认--pod-network-cidr与插件配置一致。kubeadm join命令是否过期(有效期24小时);确认节点网络可达。通过以上步骤,可在CentOS上完成Kubernetes网络配置,实现Pod间通信及可选的安全策略控制。根据实际需求选择合适的网络插件,并参考官方文档优化配置。