Ubuntu Kubernetes网络配置怎样实现
导读: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
- Flannel(示例)
- 验证
- 等待节点变为 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(如需回滚)
- 文件 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
