Dataplane V2


本页面简要介绍了 Dataplane V2 的功能和工作原理。

简介

Dataplane V2 是专为 Kubernetes 网络优化的 GKE 和 Anthos 集群数据平面。Dataplane V2 提供:

  • GKE 和所有 Anthos 集群环境中的网络体验一致。如需了解支持 Dataplane V2 的环境,请参阅 Dataplane V2 的可用性
  • 可实时查看网络活动。
  • 更简单的架构,可更轻松管理集群并进行问题排查。

Dataplane V2 基于 eBPF 和 Linux 节点,可使用 Kubernetes 特有的元数据灵活且高效地处理内核中的网络数据包。

Dataplane V2 的优势

安全

Kubernetes 网络政策始终在具有 Dataplane V2 的集群中处于开启状态。您无需安装和管理第三方软件插件(如 Calico)即可实施网络政策。

可伸缩性

Dataplane V2 是在 kube-proxy 的情况下实现的,不依赖于 iptables 进行服务路由。这消除了在超大型集群中扩缩 Kubernetes 服务的主要瓶颈。

运维

使用 Dataplane V2 创建集群时,将构建网络政策日志记录。在集群上配置日志记录 CRD,以查看 Pod 允许和拒绝连接的时间。

一致性

Dataplane V2 可在 GKE 和其他 Anthos 集群环境上提供相同的功能。如需了解详情,请参阅 Dataplane V2 的可用性

Dataplane V2 的工作原理

Dataplane V2 通过 eBPF(扩展型伯克利包过滤器)实现。当数据包到达 GKE 节点时,内核中安装的 eBPF 程序会决定如何路由和处理数据包。与使用 iptable 处理数据包不同,eBPF 程序可以在数据包中使用 Kubernetes 特有的元数据。这样一来,Dataplane V2 便可以高效地处理内核中的网络数据包,并向用户空间报告已添加注解的操作,以便进行日志记录。下图显示了数据包使用 Dataplane V2 通过节点的路径。

到达节点的数据包由 eBPF 在内核中进行处理。eBPF 程序可执行政策强制执行、服务解析和连接跟踪。系统会向用户空间报告此活动以进行日志记录。随后,数据包负载将传递到 Pod。

节点上的数据平面 V2 控制器称为 anetdanetd 作为 DaemonSet 部署到集群中的每个节点,并负责解读 Kubernetes 对象并在 eBPF 中编程所需的网络拓扑。anetd 将替换 kube-proxy 和 Calico 分别在 kube-system 命名空间中执行的服务路由和网络政策实施。

技术规范

Dataplane V2 支持具有以下规范的集群:

指定 GKE VMware 上的 Anthos 集群 Anthos on Bare Metal
每个集群的节点数 500* 500 500
每个集群的 Pod 数 5 万 15000 27500
每个集群的 LoadBalancer 服务 750 500 1000

Dataplane V2 维护一个服务映射,以跟踪哪些服务将哪些 Pod 称为后端。在所有服务中汇总的每项服务的 Pod 后端数量必须全部适合服务映射,其中可以包含多达 64000 个条目。如果超出此限制,您的集群可能无法按预期工作。

* 使用 GKE 上的 Dataplane V2,每个集群最多可以请求 1000 个节点配额。请提交支持服务工单并提供集群名称。

VMware 上的 Anthos 集群支持的 LoadBalancer 服务数量取决于所使用的负载平衡器模式。在使用捆绑式负载平衡模式 (Seesaw) 时,VMware 上的 Anthos 集群支持 500 个 LoadBalancer 服务,并在将集成负载平衡模式与 F5 结合使用时支持 250 个 LoadBalancer 服务。如需了解详情,请参阅可扩缩性

限制

GKE、Anthos clusters on VMware 以及其他所有环境存在以下限制:

  • 数据平面 V2 只能在创建新集群时启用。现有集群无法升级为使用 Dataplane V2。
  • Dataplane V2 不支持 Windows 节点。
  • 在使用 Dataplane V2 和 NodeLocal DNSCache 的集群上,如果 dnsPolicy 设置为 ClusterFirstWithHostNet,则在主机网络上运行的 pod 可能会遇到 DNS 超时。
  • 如果您的集群拥有 LoadBalancerexternalTrafficPolicy: Cluster(默认设置)类型的服务,则这些服务可能会在节点启动、关闭或运行状况不佳时出现丢包现象,因为以这种方式配置的负载均衡器始终无法通过运行状况检查。在这种情况下,无论运行状况如何,负载均衡器都会在所有后端之间分配新连接。

    如果节点运行状况良好,则会将流量重定向到服务的 Pod。如果节点刚刚启动或正在关停,则无法重定向流量,并且数据包将被丢弃。

在不使用 Dataplane V2 的情况下启用网络政策强制执行功能

如需了解如何在不使用 Dataplane V2 的集群中启用网络政策强制执行功能,请参阅使用网络政策强制执行功能

后续步骤