Antrea v1.15.0 发布:新增支持 NodeNetworkPolicy,Egress 支持多子网模式


Antrea项目是一个基于Open vSwitch(OVS)的开源Kubernetes CNI网络解决方案,旨在为Kubernetes集群提供更高效、更安全的跨平台网络和安全策略。

Antrea 版本 v1.15.0 版本现已发布,此次更新带来了很多强大的功能和改进:

  • 首先,引入了NodeNetworkPolicy功能,允许用户将ClusterNetworkPolicy应用于Kubernetes节点,为Pod和节点之间提供一致的安全特性。
  • 其次,Egress新增支持使用与默认节点子网不同的子网中的IP,特别适用于用户希望使用VLAN将出口流量与集群内流量分开的场景。
  • 第三,Antrea新增CNI迁移工具,简化了从特定的CNI迁移到Antrea的流程,确保用户在其已建立的集群上能够顺畅切换来获得Antrea的丰富功能。
  • 第四,Antrea现在支持第7层网络流导出,为用户提供了针对应用程序流量模式更全面观测能力。
  • 最后,Antrea在多个维度上提高了可用性和兼容性:为Agent和Controller提供了单独的容器镜像,以最小化镜像大小并加快部署新Antrea版本的速度;Flexible IPAM现在支持多播流量; 同时Antrea可以用作Talos集群的CNI;在AKS中也已验证encap模式,欢迎用户在AWS体验尝试。

以下是本版本更新的详细内容:

主要功能

  • Egress功能现在支持使用与默认节点子网不同的子网中的IP。(#5799, @tnqn)

默认情况下,假定从ExternalIPPool分配的IP与节点IP在同一子网中。从Antrea v1.15开始, 可以从与节点IP不同的子网中分配IP。

为此新增了subnetInfo字段,可以在该字段中定义特定ExternalIPPool的子网属性。 注意在使用不同子网时:

  1. 必须设置gateway和prefixLength。当目的地址和Egress IP不在同一子网中时, Antrea将通过指定的网关路由Egress流量,否则直接路由到目的地。
  2. 作为可选项,如果底层网络需要,可以指定vlan字段。 一旦设置该值,Antrea将标记离开Egress节点的Egress流量,添加指定的VLAN ID。相应地, Egress节点收到的目的地址为EgressIP的回复流量也应被标记为指定的VLAN ID。

使用非默认子网的ExternalIPPool的示例如下:

apiVersion: crd.antrea.io/v1beta1kind: ExternalIPPoolmetadata:name: prod-external-ip-poolspec:ipRanges:- start: 10.10.0.2end: 10.10.0.10subnetInfo:gateway: 10.10.0.1prefixLength: 24vlan: 10nodeSelector:matchLabels:network-role: egress-gateway
  • 添加迁移工具,以支持从其他CNI迁移到Antrea。(#5677, @hjiajing)

迁移过程分为三个步骤:

  • 清理旧的CNI。
  • 在集群中安装Antrea。
  • 部署Antrea迁移工具。
kubectl apply -f https://raw.githubusercontent.com/antrea-io/antrea/main/build/yamls/antrea-migrator.yml

该迁移工具作为DaemonSet在集群中运行,将原地重启集群中所有非hostNetwork的Pod, 并执行必要的网络资源清理。

  • 在Antrea中添加L7网络流量导出支持,可导出具有L7协议信息的网络流量。(#5218, @tushartathgur)

要导出Pod或Namespace的7层流量,用户需要为Pod或Namespace添加Annotation visibility.antrea.io/l7-export, 并将其值设置为流量方向,例如ingress、egress或both。

例如,要在default Namespace中启用ingress方向上的7层流量导出,可以使用:

kubectl annotate pod test-pod visibility.antrea.io/l7-export=ingress

根据注释,流量导出器将使用字段appProtocolName和httpVals将7层流量数据导出到Flow Aggregator 或配置的IPFIX收集器。

    • appProtocolName字段用于指示应用层协议名称(例如http),如果未导出应用层数据,则为空。

    • httpVals存储了一个序列化的JSON字典,其中每个HTTP请求都映射到唯一的ID。 此格式使我们能够将与同一连接相关的所有HTTP流量分组到相同的导出记录中。

    例如: 

  •  
"{\"0\":{\"hostname\":\"10.10.0.1\",\"url\":\"/public/\",\"http_user_agent\":\"curl/7.74.0\",\"http_content_type\":\"text/html\",\"http_method\":\"GET\",\"protocol\":\"HTTP/1.1\",\"status\":200,\"length\":153}}"

    目前该特性只支持Linux节点,且只支持HTTP1.1协议流量的导出。 有关此功能的更多信息,请参阅相关文档[5]

  • 新增NodeNetworkPolicy功能,允许用户将ClusterNetworkPolicy应用于Kubernetes节点。(#5658 #5716, @hongliangl @Atish-iaf)

    NodeNetworkPolicy在本次版本更新中作为 Alpha 功能引入。 如下所示,在ConfigMap antrea-config中,必须启用一个名为NodeNetworkPolicy的功能开关。

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
apiVersion: v1kind: ConfigMapmetadata:name: antrea-confignamespace: kube-systemdata:antrea-agent.conf: |featureGates:NodeNetworkPolicy: true

    也可以使用以下helm安装命令来启用功能开关:

  •  
helm install antrea antrea/antrea --namespace kube-system --set featureGates.NodeNetworkPolicy=true

    NodeNetworkPolicy是Antrea ClusterNetworkPolicy(ACNP)的扩展。通过指定NetworkPolicy spec的appliedTo为nodeSelector字段, 将ACNP应用于nodeSelector所选的Kubernetes节点。

    例如,如下ClusterNetworkPolicy可以控制节点到Pod的流量,在集群中定义该ClusterNetworkPolicy并应用, 标有app=client的Pod发往标有kubernetes.io/hostname: k8s-node-control-plane的节点的入口流量将被阻止:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
apiVersion: crd.antrea.io/v1beta1kind: ClusterNetworkPolicymetadata:name: restrict-http-to-nodespec:priority: 5tier: applicationappliedTo:- nodeSelector:matchLabels:kubernetes.io/hostname: k8s-node-control-planeingress:- name: allow-cidraction: Allowfrom:- ipBlock:cidr: 10.10.0.0/16ports:- protocol: TCPport: 80- name: drop-otheraction: Dropports:- protocol: TCPport: 80

    也可以控制节点到节点或者IP段的网络流量,以下示例是阻止带有标签kubernetes.io/hostname: k8s-node-control-plane的节点上的流量发往带有标签kubernetes.io/hostname: k8s-node-worker-1和某些IP块的节点:

    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    apiVersion: crd.antrea.io/v1beta1kind: ClusterNetworkPolicymetadata:name: egress-drop-node-to-nodespec:priority: 5tier: applicationappliedTo:- nodeSelector:matchLabels:kubernetes.io/hostname: k8s-node-control-planeegress:- name: drop-22action: Dropto:- nodeSelector:matchLabels:kubernetes.io/hostname: k8s-node-worker-1- ipBlock:cidr: 192.168.77.0/24- ipBlock:cidr: 10.10.0.0/24ports:- protocol: TCPport: 22

    有关此功能的更多信息,请参阅相关文档[6] 。

  • 为Antrea Multicast功能添加Flexible IPAM支持。(#4922, @ceclinux)

  • 支持Talos集群运行Antrea作为CNI,并将Talos添加到K8s安装程序文档中。(#5718 #5766, @antoninbas)

  • 在NetworkAttachmentDefinition的网络配置不包括IPAM配置时,支持Secondary Network。(#5762, @jianjuns)

  • 添加在AKS中以encap模式安装Antrea的说明。(#5901, @antoninbas)

其他变更

  • 将Secondary NetworkPod控制器更改为订阅CNIServer事件,以支持bridging和VLAN网络。(#5767, @jianjuns)
  • 为Secondary Network支持使用Antrea IPAM。(#5427, @jianjuns)
  • 为antrea-agent和antrea-controller创建不同的镜像,以减小总的镜像大小,加快antrea-agent和antrea-controller的启动速度。(#5856 #5902 #5903, @jainpulkit22)
  • 在使用Wireguard加密模式时不创建隧道接口(antrea-tun0)。(#5885 #5909, @antoninbas)
  • 在Egress IP分配更改时记录事件,以便更好地进行故障诊断。(#5765, @jainpulkit22)
  • 更新Windows文档,完善安装指南和说明。(#5789, @antoninbas)
  • 根据需要自动启用IPv4/IPv6转发,不再需要用户操作或依赖其他组件。(#5833, @tnqn)
  • 在antrea-agent中添加跳过加载内核模块的能力,以支持一些特定的发行版(例如:Talos)。(#5754, @antoninbas)
  • 新增支持在Traceflow观测结果中添加NetworkPolicy规则名称。(#5667, @Atish-iaf)
  • 在"antctl traceflow"工具中使用Traceflow API v1beta1而不是弃用的API版本。(#5689, @Atish-iaf)
  • 在FlowExporter中用netip.Addr替换net.IP,以优化内存使用并提高FlowExporter的性能。(#5532, @antoninbas)
  • 更新antrea-agent-simulator中kubemark的镜像版本,从v1.18.4升级到v1.29.0。(#5820, @luolanzone)
  • 将CNI插件升级到v1.4.0。(#5747 #5813, @antoninbas @luolanzone)
  • 更新Egress功能选项和如何在AWS上使用的文档。(#5436, @tnqn)
  • 在antrea-ipam.md文档中添加Flexible IPAM的详细设计信息。(#5339, @gran-vmv)

问题修复

  • 修复WireGuard加密模式和GRE隧道模式下MTU配置不正确的问题。(#5880 #5926, @hjiajing @tnqn)
  • 在TrafficControl控制器中优先处理L7 NetworkPolicy流,避免Pod同时也被TrafficControl CR影响,从而可能绕过L7引擎的情况。(#5768, @hongliangl)
  • 在释放Pod IP之前删除OVS端口和流规则。(#5788, @tnqn)
  • 将NetworkPolicy存储在文件系统中作为备用数据源,以便让antre-agent在启动时无法连接到antrea-controller时回退到使用文件。(#5739, @tnqn)
  • 确保应用初始NetworkPolicies后才启动Pod网络转发,避免在antrea-agent重新启动时Pod的出入口流量绕过NetworkPolicy。(#5777, @tnqn)
  • [Windows]修复Prepare-AntreaAgent.ps1中为容器化OVS的Clean-AntreaNetwork.ps1调用。(#5859, @antoninbas)
  • [Windows]在Prepare-Node.ps1中添加kubelet启动参数中缺失的空格,修复kubelet不能启动的问题。(#5858, @antoninbas)
  • 修复由缺少参数引起的antctl trace-packet命令调用失败的问题。(#5838, @luolanzone)
  • 当启用Antrea proxyAll模式时,为具有ExternalIPs的Services支持Local ExternalTrafficPolicy。 (#5795, @tnqn)
  • 将net.ipv4.conf.antrea-gw0.arp_announce设置为1,以修复当Node或hostNetwork Pod访问本地Pod并启用AntreaIPAM时的ARP请求泄漏问题。(#5657, @gran-vmv)
  • 跳过对hairpinned Service流量(Pod通过Service访问自身)的入口NetworkPolicies规则的执行。(#5687 #5705, @GraysonWu)
  • 添加host-local IPAM GC,以避免在antrea-agent重新启动时可能的IP泄漏问题。(#5660, @antoninbas)
  • 修复使用基于UBI的镜像时的CrashLookBackOff问题。(#5723, @antoninbas)
  • 删除fillPodInfo/fillServiceInfo中的冗余日志以修复日志泛滥问题,并更新deny连接的DestinationServiceAddress。(#5592 #5704, @yuntanghsu)
  • [Windows]增强在Windows上的HNS网络初始化,以避免一些极端情况下可能出现的问题。(#5841, @XinShuYang)
  • 改善故障排除,优化端点查询规则索引响应。(#5783, @qiyueyao)
  • 优化FQDN控制器的处理逻辑,过滤掉一些不必要的规则处理。(#5893, @Dyanngg)
  • [Windows]更新Windows OVS下载链接,移除无效证书,以防止安装未签名的OVS驱动。(#5839, @XinShuYang)
  • 修复StatefulSets上Antrea FlexibleIPAM的IP注释不起作用的问题。(#5715, @gran-vmv)
  • 在PrepareHNSNetwork中添加DHCP IP重试以修复可能的IP获取失败的问题。(#5819, @XinShuYang)
  • 修改"antctl mc deploy"以支持Antrea多集群部署在manifest更改时的更新。(#5257, @luolanzone)

相關推薦

2023-03-31

Antrea 1.11.0 发布了。Antrea 是一个 Kubernetes 网络解决方案,旨在实现 Kubernetes 原生。它使用 Open vSwitch 作为网络数据平面,在 Layer3/4 上运行,从而为 Kubernetes 集群提供网络和安全服务。 此版本的 EndpointSlice 功能已从 Alpha 升级到 Be

2023-10-25

你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代 KubeEdge 发布 v1.15.0 版本。新版本新增多个增强功能,在边缘节点管理、边缘应用管理、边缘设备管理等方面均有大幅提升。 KubeEdge v1.15.0 新增特性: 支持 Windows 边缘节点 基

2023-06-29

很高兴地宣布 Goploy v1.15.0 的发布! 这是一次重要更新,旨在为开发者和团队提供更快速、高效的部署体验。无论您是个人开发者还是大型企业团队,Goploy v1.15.0 都将成为您的首选部署工具。 Goploy 是一款基于 Go 语言开发的强

2023-07-06

Antrea 1.12.1 发布了。Antrea 是一个 Kubernetes 网络解决方案,旨在实现 Kubernetes 原生。它使用 Open vSwitch 作为网络数据平面,在 Layer3/4 上运行,从而为 Kubernetes 集群提供网络和安全服务。 此版本的更新内容: 升级 libOpenflow 和 ofn

2022-09-16

Jeepay 是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。 v1.15.0 版本升级内容: 增加计全付(jeepay plus线上支付平台)支付渠道接

2023-12-30

GreatSQL 8.0.32-25 今日发布 版本信息 发布时间:2023年12月28日 版本号:8.0.32-25, Revision db07cc5cb73 下载链接:RPM包、TAR包、源码包 用户手册:GreatSQL 8.0.32-25 User Manual 特性增强 GreatSQL 8.0.32-25版本中首次推出支持高性

2022-10-29

2022年10月21日,ZStack Cloud正式发布最新版本——ZStack Cloud 4.5.0,涵盖一系列重要功能,以下为您进行详细介绍。 ZStack Cloud 4.5.0新功能概览 ZStack Cloud支持标准单点登录(SSO)协议 企业管理新增支持OIDC/OAuth2/CAS第三

2022-12-11

一个系统的,并且它是安全且私密的。Syncthing v1.22.2 现已发布,具体更新内容如下: Bug 修复 #3744:具有自定义图标的文件夹在 Windows 上不可删除 #8570:在启用监视更改的情况下添加加密文件夹时重新扫描间隔不正确 #8592

2023-04-01

Pigsty v2.0.2 现已发布,现在可以使用 pgvector 插件存储 AI Embedding,并执行高效的最近邻向量搜索。同时,2.0.2 修复了 MinIO CVE-2023-28432 高危漏洞,修复了一些 Bug,并对监控系统面板进行了优化,官方强烈建议升级。 具体更新内容

2023-01-06

他数据服务的用户提供了便利。此外,EMQX Operator 2.1 即将发布,通过 EMQX 节点疏散能力在 Kubernetes 上实现了可控、平滑的优雅升级。 EMQX 12 月 EMQX 开源版发布了 v5.0.12,更新了 Dashboard 1.1.3 版本。企业版即将发布 v4.3.18 以及 v4.4

2022-11-05

上具备万物互联能力的操作系统-openKylin 0.9,于今天正式发布!   本次openKylin 0.9版本基于5.15内核构建,新合并了1720+内核补丁,新增了互联互通应用、系统管家应用、openKylin通用集成开发环境等;同时升级优化了系统安装

2023-10-30

行优化配置,可编译成独立的组件,单独以组件形式进行发布。 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。

2023-04-01

合性案例,助力开发人员对新兴技术的学习和掌握。 发布背景 自11月24日,Spring Boot 3.0 以及 Spring Cloud 2022.0.0、Spring Cloud Tencent 1.8.2 等全新版本发布,整个Java 社区也步入的 Java 17 和 Spring Boot 3 的新时代。紧跟 Java 技术和 Spring

2023-07-20

行优化配置,可编译成独立的组件,单独以组件形式进行发布。 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。 [3]界面预览 Dromara 开源社区 一、社区愿景