kube-router文档中文翻译三 运行原理

运行原理

Kube-router 可作为代理或 Pod(通过 DaemonSet)在每个节点上运行,并利用标准 Linux 技术iptables、ipvs/lvs、ipset、iproute2

服务代理和负载平衡

博客: 使用 IPVS/LVS 的 Kubernetes 网络服务代理

Kube-router 使用 Linux 内置的 IPVS/LVS 技术提供 L4 负载平衡。每个ClusterIPNodePortLoadBalancer的Kubernetes服务类型都配置为 IPVS 虚拟服务。每个服务端点
配置为关联虚拟服务的真实服务器。标准的ipvsadm工具可用于验证配置和监控活动连接。

以下是 Kubernetes 上服务的示例集:

svc.jpg

以及服务的端点:

ep.jpg

以及它们如何通过 kube-router 映射到 IPVS:

ipvs1.jpg

Kube-router 会观察 Kubernetes API 服务器,以获取关于服务/端点的更新,并自动同步 IPVS 配置,以反映服务的预期状态。服务的理想状态。Kube-router 使用 IPVS 伪装模式,目前使用
轮循调度。保持源 pod IP,以便应用适当的网络策略。

Pod 入口防火墙

博客: 利用iptables执行Kubernetes网络策略

Kube-router 通过使用 iptables、ipset 和 conntrack 提供了 Kubernetes 网络策略的实现。命名空间中的所有使用DefaultDeny入口隔离策略的Pod都会被禁止访问。只有匹配了白名单策略才允许到达这些 Pod。以下filter表中的一组 iptables 规则和链用于实现网络策略语义。

节点上运行的每个 Pod 默认情况下入口都被阻止,这些 Pod 将在防火墙表的 FORWARD 和 OUTPUT 链中匹配,流量被发送给链上特定的 pod
添加以下规则以匹配各种情况

  • 通过本地网桥在同一节点上的 Pod 之间切换的流量
  • 在不同节点上的 Pod 之间路由的流量
  • 来自 Pod 的流量,通过服务代理并被
    路由到同一节点上的 其他Pod(前后端分离的应用或者访问数据库)

forward.png

每个 Pod 专用防火墙链都有阻止流量的默认规则。添加规则到网络策略特定策略链,以跳转流量。规则仅涵盖适用于目标 pod ip 的策略。添加规则的目的是接受已建立的流量,以允许返回流量。

podfw.png

每个策略链都有通过源和目的 ipset 表达的规则。与网络策略规范中的入口规则相匹配的 Pod 集构成源 Pod ip ipset。与网络策略规范中 pod 选择器(针对目的地 Pod)相匹配的 Pod 集形成目的地 Pod ip ipset。

policyfw.png

最后这些组成网络规则的 ipsets被创建以用于特定的网络策略链。

ipset.jpg

Kube-router 会实时关注 Kubernetes API 服务器中的名称空间、网络策略和 pod 的变化,并动态更新 iptables 和 ipset配置,以反映pod 所需的入口防火墙状态。

Pod 网络

博客: 使用 BGP 的 Kubernetes pod 网络连接及其他

每个节点都要运行Kube-router。节点的子网可从节点上的 CNI 配置文件或通过 Node.PodCidr 获取。每个节点上的 kube-router 实例都充当 BGP 路由器,并广播节点的CIDR 。每个节点都与群集中的其他节点对等形成完整网格。从其他节点(BGP对等体)学习到的路由注入本地节点路由表。在数据路径上,节点间Pod 之间的通信由节点上的路由堆栈完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值