在CentOS上完成Kubernetes(k8s)安装后,网络配置是确保集群正常运行的关键步骤,主要包括基础环境准备、网络插件安装及网络策略配置三部分。
在配置网络前,需完成以下基础设置,避免网络冲突或权限问题:
systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 永久禁用 /etc/sysconfig/network-scripts/ifcfg-ens33,接口名以ip a命令为准):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 DNS2=114.114.114.114 重启网络服务使配置生效:systemctl restart network /etc/hosts文件添加集群节点信息:hostnamectl set-hostname k8s-master # 主节点 # 或 hostnamectl set-hostname k8s-node1 # 子节点 echo "192.168.1.100 k8s-master" >> /etc/hosts echo "192.168.1.101 k8s-node1" >> /etc/hosts chrony并启动:yum install -y chrony && systemctl enable chronyd && systemctl start chronyd Kubernetes依赖CNI(Container Network Interface)插件实现Pod间通信,常用插件包括Flannel(简单易用)和Calico(高性能、支持网络策略)。
Flannel提供overlay网络(VXLAN模式),适合小规模集群,配置简单:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 验证插件状态:
kubectl get pods -n kube-system | grep flannel # 应显示"Running"状态 Calico采用纯三层转发(无overlay),性能更优且支持网络策略(NetworkPolicy),适合大规模集群:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml 验证插件状态:
kubectl get pods -n kube-system | grep calico # 应显示"Running"状态 网络策略用于控制Pod间的访问权限,提升集群安全性。以下是一个允许同一命名空间内所有Pod互相访问的示例:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-same-namespace namespace: default # 作用于default命名空间 spec: podSelector: {} # 匹配所有Pod policyTypes: - Ingress # 控制入站流量 - Egress # 控制出站流量 ingress: - from: - podSelector: {} # 允许同一命名空间内的Pod访问 egress: - to: - podSelector: {} # 允许访问同一命名空间内的Pod 应用策略:
kubectl apply -f network-policy.yaml Ready状态:kubectl get nodes kubectl run test-pod --image=nginx --restart=Never --rm -it -- /bin/sh # 在Pod内执行:ping <另一个Pod的IP> 或 curl <另一个Pod的IP>:80 通过以上步骤,可完成CentOS系统下Kubernetes的网络配置,确保集群内Pod间通信正常。根据实际需求选择合适的网络插件,并通过NetworkPolicy强化网络安全。