以下是针对 Kubernetes 网络架构的面试题及详细解答,涵盖基础概念、组件通信、网络插件、策略和高级特性等核心内容,适合面试准备或知识梳理:

---

### **一、基础概念类**
1. **Kubernetes 网络模型的核心原则是什么?** 
   - **每个 Pod 一个 IP**:Pod 内所有容器共享同一网络命名空间,通过 `localhost` 通信;Pod 间直接通过 IP 通信,无需 NAT。 
   - **扁平化网络**:集群内所有 Pod 处于同一网络平面,可直接互通。 
   - **Service 抽象**:通过 Service 提供稳定的访问端点,隐藏后端 Pod 的动态变化。

2. **Kubernetes 网络模型的核心组件有哪些?** 
   - **Pod 网络**:分配唯一 IP,实现容器间通信。 
   - **Service 网络**:通过 ClusterIP、NodePort、LoadBalancer 等类型暴露服务。 
   - **Ingress**:管理外部 HTTP/HTTPS 流量,支持路径和域名路由。 
   - **CNI 插件**:如 Calico、Flannel,实现跨节点网络和策略控制。 
   - **DNS 服务**:为 Service 和 Pod 提供域名解析(如 CoreDNS)。

---

### **二、组件通信类**
3. **Pod 间的通信机制是什么?** 
   - **同节点通信**:通过 `veth pair` 和 Linux 网桥(如 `cbr0`)直接转发。 
   - **跨节点通信**:依赖 CNI 插件实现,常见方式包括: 
     - **Overlay 网络**:如 Flannel 的 VXLAN 封装数据包。 
     - **路由模式**:如 Calico 的 BGP 协议动态更新路由表。 

4. **Pod 如何与 Service 通信?** 
   - **ClusterIP**:Pod 访问 Service 的 ClusterIP 时,流量通过 `kube-proxy` 生成的 iptables/IPVS 规则负载均衡到后端 Pod。 
   - **NodePort/LoadBalancer**:外部流量先到达节点端口或云负载均衡器,再转发到 Pod。 

5. **Ingress 的工作原理是什么?** 
   - **Ingress 资源**:定义路由规则(如 `/api` 转发到 Service A)。 
   - **Ingress 控制器**(如 Nginx、Traefik):监听规则变化,动态生成配置,将请求转发至对应 Service。 

---

### **三、网络插件与策略类**
6. **Flannel 和 Calico 的区别是什么?** 
   | **特性**       | **Flannel**                     | **Calico**                     |
   |----------------|---------------------------------|--------------------------------|
   | **网络类型**   | Overlay(VXLAN/UDP封装)        | Underlay(BGP路由)            |
   | **性能**       | 较低(封装开销)                | 高(直接路由)                 |
   | **网络策略**   | 不支持复杂策略                  | 支持精细化的 NetworkPolicy      |
   | **适用场景**   | 小规模集群、简单需求            | 大规模集群、需要隔离和策略     |

7. **NetworkPolicy 的作用及实现原理?** 
   - **作用**:控制 Pod 间流量,实现微隔离(如禁止某些命名空间访问)。 
   - **实现原理**: 
     1. 定义 `podSelector` 和 `ingress/egress` 规则。 
     2. CNI 插件(如 Calico)根据规则生成 iptables 或 eBPF 规则,过滤流量。 

8. **如何排查 Pod 间通信失败?** 
   - **步骤**: 
     1. 检查 Pod 状态(`kubectl get pods`)和 IP 分配。 
     2. 进入 Pod 测试连通性(`kubectl exec -it <pod> -- ping <目标IP>`)。 
     3. 检查 CNI 插件日志(如 `journalctl -u flanneld`)。 
     4. 验证防火墙规则(如 `iptables -L`)和安全组配置。 

---

### **四、高级特性类**
9. **Kubernetes 如何实现外部流量接入?** 
   - **NodePort**:通过节点端口暴露服务(默认范围 30000-32767)。 
   - **LoadBalancer**:云平台自动创建负载均衡器(如 AWS ALB)。 
   - **Ingress**:七层代理,支持 TLS 终止和路径路由。 

10. **Kubernetes 网络调试与优化建议?** 
    - **调试工具**: 
      - `kubectl logs`:查看 Pod 日志。 
      - `tcpdump`:抓包分析(需进入 Pod 或节点)。 
      - `netstat -tuln`:检查端口监听。 
    - **优化方向**: 
      - 使用高性能 CNI 插件(如 Cilium 基于 eBPF)。 
      - 启用 `kube-proxy` 的 IPVS 模式(减少 iptables 规则开销)。 
      - 优化 DNS 查询(调整 `ndots` 参数或使用 NodeLocal DNSCache)。 

---

### **五、扩展问题(深度场景)**
11. **Kubernetes 多集群网络如何互联?** 
    - **方案**: 
      - **VPN 或专线**:通过 IPsec 或 WireGuard 打通集群间网络。 
      - **Service Mesh**:如 Istio Multicluster,通过 Ingress Gateway 路由流量。 
      - **CNI 扩展**:如 Submariner 提供跨集群网络和服务发现。 

12. **如何实现 Pod 固定 IP?** 
    - **静态 IP 分配**: 
      - 使用 `hostNetwork: true`(共享节点网络,安全性低)。 
      - 通过 CNI 插件(如 Calico 的 `IPAM` 保留 IP 池)。 
      - 使用 StatefulSet 和 `serviceName` 配合 Headless Service。 

---

通过以上问题的解答,可以系统掌握 Kubernetes 网络的核心设计、组件交互和故障排查方法,适合面试中展示深度理解和实践经验。
 

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐