首页主机资讯Ubuntu Kubernetes网络配置怎样实现

Ubuntu Kubernetes网络配置怎样实现

时间2025-12-19 01:30:03发布访客分类主机资讯浏览751
导读:Ubuntu 上 Kubernetes 网络配置实操指南 一、前置条件与内核网络准备 所有节点统一配置:关闭 Swap、开启 IP 转发 与 网桥过滤,加载内核模块,保证节点间互通。 建议的 sysctl 与模块配置(写入 /etc/sy...

Ubuntu 上 Kubernetes 网络配置实操指南

一、前置条件与内核网络准备

  • 所有节点统一配置:关闭 Swap、开启 IP 转发网桥过滤,加载内核模块,保证节点间互通。
  • 建议的 sysctl 与模块配置(写入 /etc/sysctl.d/k8s.conf):
    • net.bridge.bridge-nf-call-iptables = 1
    • net.bridge.bridge-nf-call-ip6tables = 1
    • net.ipv4.ip_forward = 1
  • 执行加载与生效:
    • sudo modprobe br_netfilter
    • sudo sysctl --system
  • 容器运行时建议使用 containerd,并启用 SystemdCgroup(/etc/containerd/config.toml 中 SystemdCgroup = true)。以上为后续 CNI 插件正常工作的基础。

二、选择并部署 CNI 网络插件

  • 常用方案与适用场景
    • Flannel:轻量、上手快,适合中小规模或开发测试;默认 VXLAN,同二层网可用 Host-GW 提升性能。
    • Calico:基于 BGP 的三层网络,支持细粒度 NetworkPolicy,适合中大规模与高安全场景。
    • Cilium:基于 eBPF,高性能,可替代 kube-proxy,适合大规模与高性能场景(建议内核 ≥ 5.4)。
  • 部署步骤(择一)
    • Flannel(示例)
      • 初始化集群时指定 Pod 网段:kubeadm init --pod-network-cidr=10.244.0.0/16
      • 部署 Flannel:kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
    • Calico(示例)
      • 安装 Tigera Operator:kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
      • 安装自定义资源:kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
      • 如使用非默认 Pod 网段,编辑 custom-resources.yaml 中的 CALICO_IPV4POOL_CIDR 为实际值(如 10.244.0.0/16)。
    • Cilium(示例)
      • 使用 Helm:helm install cilium cilium/cilium --namespace kube-system --set k8sServiceHost=< API_IP> --set k8sServicePort=6443
  • 验证
    • 等待节点变为 Ready:kubectl get nodes
    • 查看插件组件运行状态(例如 Calico:kubectl get pods -n calico-system)。

三、网络策略与最小示例

  • 启用策略前,确保已部署支持策略的插件(如 Calico/Cilium)。
  • 示例:仅允许同一命名空间内带有 app=myapp 标签的 Pod 互访
    • 文件 network-policy.yaml
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: allow-same-namespace
      spec:
        podSelector:
          matchLabels:
            app: myapp
        policyTypes:
        - Ingress
        ingress:
        - from:
          - podSelector:
              matchLabels:
                app: myapp
      
    • 应用与校验
      • kubectl apply -f network-policy.yaml
      • kubectl get networkpolicies
      • kubectl delete -f network-policy.yaml(如需回滚)

四、端口与云上安全组放行

  • 典型端口要求(以常见清单为例)
    • 控制面与节点通信:TCP 6443(kube-apiserver)、2379-2380(etcd)、10250-10252(kubelet、kube-scheduler、kube-controller-manager)
    • Flannel VXLAN 数据面:UDP 8472
    • 云上环境需在 安全组防火墙 放行上述端口,否则节点间网络与调度会异常。

五、连通性验证与常见问题

  • 快速验证
    • 在不同节点分别启动测试 Pod(如 busybox),互相 ping Pod IP 或通过 curl 访问服务端口,确认跨节点通信正常。
    • 查看节点与系统 Pod 状态:kubectl get nodes;kubectl get pods -A。
  • 常见问题排查
    • 节点 NotReady:检查 CNI 是否已部署、Pod 网段是否与 –pod-network-cidr 一致、节点间网络与端口是否可达。
    • Flannel 与 Calico 冲突:确保集群只安装 一种 CNI 插件。
    • Pod 网段冲突:初始化时指定的 Pod CIDR 需与 CNI 配置一致(如 Flannel 默认 10.244.0.0/16)。
    • 双网卡/多网卡环境:在 Calico 中显式设置 IP_AUTODETECTION_METHOD(如 interface=eth0)以避免绑定错误网卡。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Kubernetes网络配置怎样实现
本文地址: https://pptw.com/jishu/775758.html
Ubuntu Kubernetes资源调度怎么做 Debian如何安装和配置Web服务器

游客 回复需填写必要信息