以下是Ubuntu上配置Kubernetes网络的关键技巧:
一、基础网络配置
-
系统参数优化
修改/etc/sysctl.d/kubernetes.conf,启用网桥转发并关闭IPv6:net.bridge.bridge-nf-call-iptables=1 net.ipv4.ip_forward=1 net.ipv6.conf.all.disable_ipv6=1执行
sysctl -p使配置生效。 -
静态IP配置
通过/etc/netplan/配置网卡静态IP,确保节点间网络可达,例如:network: version: 2 ethernets: ens33: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8]执行
netplan apply生效。
二、网络插件选择与部署
-
推荐插件
- Calico:支持网络策略,适合安全要求高的场景。
- Flannel:轻量级,适合简单集群。
- Cilium:高性能,支持eBPF加速。
-
安装插件
以Calico为例:kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yamlFlannel则使用:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
三、安全策略配置
-
防火墙规则
使用UFW限制仅开放必要端口(如API Server的6443、节点间通信的10250等),关闭默认的NodePort端口范围(30000-32767)或限制访问来源。
示例:sudo ufw allow from 10.0.0.0/24 to any port 6443 proto tcp # 仅允许集群内访问API Server sudo ufw deny in on ens33 from any to any port 30000:32767 # 禁止外部访问NodePort -
网络策略(NetworkPolicy)
通过YAML定义Pod间通信规则,例如限制特定命名空间的Pod只能访问数据库服务:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: db-access spec: podSelector: matchLabels: app: database ingress: - from: - namespaceSelector: matchLabels: app: frontend ports: - protocol: TCP port: 3306应用策略:
kubectl apply -f network-policy.yaml。
四、性能优化
-
调整MTU
根据网络环境设置Pod的MTU(如1500或9000),避免分片。在Calico中可通过注解配置:metadata: annotations: cni.projectcalico.org/mtu: "1500" -
启用IPVS负载均衡
在Kubernetes中配置IPVS模式提升Service转发效率,编辑/etc/kubernetes/manifests/kube-proxy.yaml,设置mode: ipvs。
五、验证与监控
-
网络连通性测试
- 使用
kubectl exec进入Pod,通过ping或curl测试Pod间通信。 - 检查节点间CNI网络插件Pod状态:
kubectl get pods -n kube-system。
- 使用
-
监控工具集成
部署Prometheus+Grafana监控网络流量、延迟等指标,重点关注Pod间通信延迟和丢包率。