文档

如何使用Terway Edge网络插件

更新时间:

Terway Edge网络插件是基于Terway和自研Flannel Route模式在ACK Edge集群提供的Underlay容器网络插件,容器网络插件需要在创建集群时进行安装,并且集群创建之后不支持更改。本文介绍如何配置Terway Edge网络插件。

说明

Terway Edge网络插件目前处于公测阶段,如需开通请提交工单申请。

在创建集群时安装Terway网络插件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击页面右上角的创建集群

  3. 单击ACK Edge 集群页签,为Terway网络插件配置集群网络的关键参数。

    配置项

    说明

    专有网络

    集群使用的VPC。

    网络插件

    选择Terway Edge

    交换机

    集群中节点所使用的虚拟交换机网段。建议选择来自3个及以上不同可用区的交换机,以达到更高集群可用性等级。

    Pod 交换机

    云端Pod所使用的虚拟交换机网段,可以与节点虚拟交换机网段重合。

    Service CIDR

    Service所使用的网段,不能与节点及Pod的网段重合。

    Pod网络CIDR

    边缘侧可供分配的容器网络IP段,请参见Kubernetes集群网络规划

    节点 Pod 数量

    边缘节点上最大可支持创建的Pod数量。

专线模式下的网络基础设施管理

如果您希望将IDC以专线的方式接入到ACK Edge集群中,在本地IDC和阿里云专有网络VPC之间构建安全、稳定、高速的私网通信,以阿里云高速通道为例,您需要进行以下网络配置:

  1. 以下图为例,本地IDC主机网段为172.16.0.0/16,云端VPC网段为192.168.0.0/16,边缘Pod网络CIDR为10.0.0.0/8,由边缘/本地IDC访问中心云的路由称为上行路由、由中心云访问本地IDC/边缘设备被称之为下行路由。

  2. 分别在本地IDC内交换机、网关设备、边界路由器以及专线网关或云企业网配置访问阿里云VPC(192.168.0.0/16)的上行路由,上行请求可以到达位于VPC的ACK Edge管控面、ECS等产品。

  3. 对应也需配置下行路由,确保云端ACK Edge管控面、ECS、容器访问IDC主机网段(172.16.0.0/16)和容器网段(10.0.0.0/8)的请求能够到达本地IDC。

  4. 专线配置需要根据具体场景进行自定义,详细描述及配置方式请参见高速通道

image

云端使用Terway组件

Terway Edge网络插件在云端节点池与ACK集群Pro版的Terway组件的工作模式一致,使用方法请参见Terway网络插件

说明

目前ACK Edge集群的Terway仅支持共享ENI模式、暂不支持DataPath、NetworkPolicy、Trunk ENI等能力。

边缘使用Flannel组件

Terway Edge网络插件在边缘侧采用Flannel网络插件自研的Route模式。节点接入之后,ACK Edge集群控制面会自动为节点分配一个Pod CIDR网段,这个节点上的Pod IP地址会从这个网段中分配,并且在宿主机路由表中配置好容器路由。

使用BGP宣告容器路由

当两台节点上的容器进行跨节点通信时,容器网络数据包需要通过主机的网络栈进行转发。

  • 当两台主机位于同一个局域网中,可以通过节点主机路由(Flannel会配置主机路由)找到目的主机地址,进行容器网络数据包的传输。

  • 当两台主机位于不同的局域网中,容器网络数据包就会通过主机转发到外部的网络设备上,但由于网络设备缺乏容器网段的路由配置,因此无法完成容器网络数据包的传输。

Flannel宣告容器网段路由

为了将容器路由配置到外部的网络设备上,Flannel的Route模式会启动一个BGP服务,与外部网络设备构建BGP会话,动态将本局域网内的容器网络宣告给网络设备。

image

如何配置BGP宣告容器路由

说明

外部网络设备(三层交换机)需支持BGP协议,并可进行配置操作。

BGPPeer是一个新的CRD(Custom Resource Definition)用于配置BGP邻居。

步骤1:配置集群内BGP客户端

  1. 请将以下内容复制到bgppeer.yaml文件中,并根据您的需求进行自定义配置。

    apiVersion: network.openyurt.io/v1alpha1
    kind: BGPPeer
    metadata:
      name: peer
    spec:
      localSpeakers:
        - node-1
        - node-2
      localAsNumber: 65010
      peerIP: 172.16.0.1
      peerAsNumber: 65001
      nodeSelector: alibabacloud.com/nodepool-id=npxxx
      # 可选项
      authPassword:
        secretKeyRef:
          name: bgp-secret
          key: password
    ---
    #可选项
    apiVersion: v1
    kind: Secret
    metadata:
      name: bgp-secret
      namespace: kube-system
    type: Opaque
    data:
      password: bXlTZWNyZXRWYWx1ZQ==  # base64编码的值。

    参数说明:

    参数

    是否必填

    说明

    metadata.name

    BGPPeer的名称。

    spec.localSpeakers

    集群内的BGP客户端节点。会全量宣告本局域网的所有节点容器网段,建议选择2个及以上节点。

    spec.localAsNumber

    本BGPPeer的ASN,也是BGP客户端所在的自治系统的编号。ASN在BGP协议中的自治系统唯一标识符,一般一个局域网是一个自治系统,私有ASN的范围为(64512,65535)。

    spec.peerIP

    局域网网关/三层交换机设备地址,用于和集群内BGP客户端节点之间构建BGP会话。

    spec.peerAsNumber

    局域网网关/三层交换机设备的ASN。

    spec.nodeSelector

    节点选择器。用于选择属于本BGPPeer自治系统的节点。建议用节点池label选择一个节点池的所有节点,如果所有边缘节点都位于一个局域网,即一个自治系统,可以配置为all()

    spec.authPassword

    建立BGP会话的密码。首先创建一个K8s资源Secret,要求必须在kube-system命名空间中,将这个Secret的Key记录到本字段中,需要标注Secret的Name,以及密码的Key。

  2. 执行以下命令,创建BGPPeer。

    kubectl apply -f bgppeer.yaml
  3. 执行以下命令,查看BGPPeer应用状态。

    kubectl get bgppeer peer

    预期输出:

    NAME   LOCALSPEAKERS         LOCALASNUMBER   PEERIP         PEERASNUMBER     AGE
    peer   ["node-1","node-2"]   65010           172.16.0.1     65001            10m

步骤2:配置外部网络设备启动BGP服务

  1. 根据您网络设备的型号以及BGP服务的配置方式启动BGP服务。

  2. 在网络设备上,将步骤1中选择的BGP节点配置为BGP邻居,并且确保可以成功构建BGP会话。

  3. 将BGP获取的容器路由添加到网络设备的路由表中。