Skip to content

网络配置

Huanyu He edited this page Aug 2, 2022 · 13 revisions

通过添加 Underlay 网络配置以及设置集群默认网络类型为 Underlay,我们可以将一个 Overlay 的集群转变为一个 Underlay 的集群来使用

相对于 Overlay 的配置,Underlay 的配置往往跟环境强相关,并且需要花费一些精力将底层网络环境信息转化为网络插件部署的参数,这也是我们推荐用 Overlay 方式一键拉起集群的原因

Hybridnet 会通过监听 K8s 集群内的 NetworkSubnet 两种 CR 对象来获取底层网络环境的相关信息

Network 对象

每个 Network 通过 spec.nodeSelector 字段和节点(Node)相关联,它代表了一组具有相同网络性质(比如,处于相同 VLAN 环境、属于同一网关、属于相同二层网络)的节点,我们称之为“网络域”。一个网络域具有这样的性质:一个带有特定地址的 Pod 如果能被部署到网络域内的某一节点,那么带有相同地址的 Pod 应该能被调度到同一网络域内的其他任意节点

每个 Network 至少需要有一个 Subnet 才能真正被使用

Underlay Network 作为对接用户基础网络设施的容器网络类型,同一个集群内可以通过不同的 mode 同时创建 VLANBGP 的 Underlay Network,如果需要进行节点扩容操作,需要为 Underlay Network 的新节点添加对应的 label

目前还不支持一个节点属于多个 Underlay Network,但是支持一个节点属于多个不同 type(比如 Overlay、Underlay)的 Network

Overlay Network 的 nodeSelector 必须为空,作为一种特殊的 Network type,其网络域自动对应集群内所有节点,一个集群最多只能有一个 Overlay Network,目前只支持创建 modeVXLAN 的 Overlay Network

Network 对象的 status.nodeList 字段显示了此时其对应的节点列表

apiVersion: networking.alibaba.com/v1
kind: Network
...
status:
  ...
  nodeList:                                           # Selected nodes.
  - network-test00002
  - network-test00003
  ...

Subnet 对象

每个 Subnet 表示一个网络域内节点可用的网段资源,必须属于并且只能属于一个 Network,一个 Network 中可以创建多个 Subnet

一个 Network 只有在其附属的 Subnet 全部被删除之后才能被删除,同理,一个 Subnet 只有在其中没有任何 IP 地址在被使用时才能被删除

Subnet 描述了一段地址范围信息,对于任意类型的 Network,基本字段是通用的,如果要对容器网络地址资源进行扩容,创建新的 Subnet 即可

apiVersion: networking.alibaba.com/v1
kind: Subnet            
metadata:
  name: subnet1                 
spec:
  network: network1                                   # 必填
                               
  netID: 0                                            # 如果是 VXLAN/BGP 网络,该字段不填;
                                                      # 对于 VLAN 网络,如果 Network 的 spec.netID 为空,Subnet 的 spec.netID 一定不能为空
                                                      # 如果 Network 的 spec.netID 不为空,Subnet 的 spec.netID 只能为空或者与 Network 的值相同

  range:
    version: "4"                                      # 必填,"4" or "6", for ipv4 or ipv6.
    
    cidr: "192.168.56.0/24"                           # 必填
    
    gateway: "192.168.56.1"                           # 如果是 VLAN 网络,必填;其他类型网络不填
                                
    start: "192.168.56.100"                           # 可选,cidr 里第一个可用来分配的 IP
    
    end: "192.168.56.200"                             # 可选,cidr 里最后一个可用来分配的 IP
    
    reservedIPs: ["192.168.56.101","192.168.56.102"]  # 可选,保留不分配的 IP,可以被 “指定” 使用
    
    excludeIPs: ["192.168.56.103","192.168.56.104"]   # 可选,不用来分配的零散 IP