在配置K8S网络前,需确保节点网络环境稳定,避免因基础设置问题导致网络故障:
/etc/sysconfig/network-scripts/ifcfg-ens33
),设置BOOTPROTO=static
、ONBOOT=yes
,并指定IPADDR
、NETMASK
、GATEWAY
、DNS1/DNS2
(如DNS1=8.8.8.8
、DNS2=114.114.114.114
),保存后重启网络服务(systemctl restart network
)。hostnamectl set-hostname <hostname>
为每个节点设置唯一主机名(如k8s-master
、k8s-node1
);编辑/etc/hosts
文件,添加集群节点IP与主机名的映射(如192.168.1.100 k8s-master
、192.168.1.101 k8s-node1
),确保节点间可通过主机名互相解析。systemctl stop firewalld && systemctl disable firewalld
关闭防火墙;通过setenforce 0
临时禁用SELinux,sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
永久禁用,避免其限制网络通信。swapoff -a
临时关闭,编辑/etc/fstab
文件注释掉Swap行(如# /dev/mapper/centos-swap swap
)永久禁用。/etc/sysctl.d/k8s.conf
文件,添加net.bridge.bridge-nf-call-ip6tables=1
、net.bridge.bridge-nf-call-iptables=1
、net.ipv4.ip_forward=1
,执行sysctl --system
使配置生效,确保K8S网络插件(如Flannel、Calico)正常工作。CNI(容器网络接口)是K8S网络的核心组件,负责Pod间通信、IP分配及网络策略实现。需根据集群规模、性能需求选择合适的插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安装,安装后检查kube-system
命名空间下的flannel
Pod状态(kubectl get pods -n kube-system -l k8s-app=flannel
)。kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
安装,支持与公有云/私有云混合部署。kubectl apply -f https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default.yaml
安装,适合对网络性能和安全有极高要求的场景。K8S NetworkPolicy用于控制Pod间、Pod与外部网络的通信,是保障集群网络安全的关键手段:
podSelector
(匹配目标Pod)、policyTypes
(Ingress/Egress/Both,定义入站/出站规则),并通过ingress
(入站规则)、egress
(出站规则)定义允许的流量(如来源IP、端口、协议)。apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
spec:
podSelector:
matchLabels:
app: myapp # 匹配目标Pod标签
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: myapp # 允许同标签Pod访问
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/8 # 允许访问外部10.0.0.0/8网段
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: restrict-external-access
spec:
podSelector:
matchLabels:
app: db # 匹配数据库Pod
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 172.16.0.10/32 # 仅允许访问外部172.16.0.10
ports:
- protocol: TCP
port: 3306 # 仅允许访问MySQL端口
应用策略:kubectl apply -f network-policy.yaml
。--v=2
参数),结合Prometheus+Grafana监控网络性能(如Pod间延迟、流量吞吐量),及时发现并解决网络问题。以上技巧覆盖了CentOS上K8S部署的网络配置全流程,从基础环境到高级优化,可根据集群规模和业务需求灵活选择。