高级Kubernetes网络:全面指南
1. 网络策略的实现
网络策略API是Kubernetes API的一部分,具有通用性,但具体实现与网络解决方案紧密相关。在每个节点上,都有一个特殊的代理或守门人,负责以下操作:
- 拦截进入节点的所有流量
- 验证流量是否符合网络策略
- 转发或拒绝每个请求
Kubernetes通过API提供了定义和存储网络策略的功能,但策略的执行则由网络解决方案或与特定网络解决方案紧密集成的专用网络策略解决方案负责。Calico和Canal就是这种方法的典型例子。Calico拥有自己的网络解决方案和网络策略解决方案,二者协同工作。此外,作为Canal的一部分,Calico还可以在Flannel之上提供网络策略执行功能。在这两种情况下,各个组件之间都实现了紧密集成。
2. 负载均衡选项
在Kubernetes集群这样的动态系统中,负载均衡是一项关键能力。节点、虚拟机和Pod不断变化,客户端难以跟踪哪些实体能够处理它们的请求。即使能够跟踪,也需要复杂的操作来管理集群的动态映射,频繁刷新并处理断开连接、无响应或速度慢的节点。负载均衡是一种经过实践检验且易于理解的机制,它增加了一层间接性,将集群内部的混乱情况对外部客户端或消费者隐藏起来。负载均衡有外部和内部两种选择,也可以混合使用。混合方法有其独特的优缺点,例如性能与灵活性的权衡。
2.1 外部负载均衡器
外部负载均衡器运行在Kubernetes集群之外,但需要有一个外部负载均衡器提供商,以便Kubernetes与之交互,进行健康检查、防火墙规则配置,并获取负载均衡器的外部IP地址。