温馨提示×

Ubuntu上Kubernetes网络配置技巧

小樊
51
2025-09-12 22:16:29
栏目: 智能运维

以下是Ubuntu上Kubernetes网络配置的关键技巧:

一、网络插件选择与安装

  • Calico:支持网络策略,适合高安全性场景,可通过以下命令安装:
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    
  • Flannel:轻量级,适合快速部署,安装命令:
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  • Weave:支持多云环境,自动构建虚拟网络,安装命令:
    kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')
    

二、系统内核参数优化

  • 启用IP转发和网桥功能:
    cat >> /etc/sysctl.d/kubernetes.conf <<EOF
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    EOF
    sysctl -p
    
  • 加载必要内核模块:
    sudo modprobe overlay br_netfilter
    

三、防火墙与安全配置

  • 使用UFW限制端口访问,仅开放必要端口(如API Server的6443端口):
    sudo ufw allow 6443/tcp
    sudo ufw default deny incoming
    sudo ufw reload
    
  • 配置Pod网络策略,例如限制命名空间间访问:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-frontend-to-database
    spec:
      podSelector:
        matchLabels:
          app: database
      ingress:
      - from:
        - namespaceSelector:
            matchLabels:
              env: backend
    

四、网络性能调优

  • 调整MTU:根据网络环境设置合适的MTU值,避免数据包分片:
    ip link set dev <网卡名> mtu 1450
    
  • 优化CNI配置:对于Calico,可通过修改calico.yaml调整IP分配模式(如使用IPAM)。
  • 启用eBPF加速:提升Calico网络性能:
    calicoctl patch felixconfiguration default --patch '{"spec": {"bpfEnabled": true}}'
    

五、服务与负载均衡

  • 使用Service暴露服务,搭配Ingress实现负载均衡:
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: nginx-ingress
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service
                port:
                  number: 80
    

六、集群网络验证

  • 检查Pod间通信:
    kubectl exec -it <pod-name> -- ping <另一pod-ip>
    
  • 查看网络插件状态:
    kubectl get pods -n kube-system -l k8s-app=calico-node
    

通过以上配置,可确保Ubuntu上Kubernetes集群的网络连通性、安全性和性能。根据实际需求选择合适的网络插件,并定期通过监控工具(如Prometheus)优化网络参数。

0