更新时间:2021-10-15 GMT+08:00
分享

Pod IP直接对外暴露

Kube-OVN中可以通过静态路由的方式将Pod IP直接对外暴露,在这种情况下,Pod所在的子网需要将natOutgoing字段设置为false,关闭出网的NAT映射。

同时需要检查主机节点iptables的Forward链中是否有drop规则,ovn0网卡以及默认出网网卡需要放开Forward。

  • 物理环境

    若需要将Pod IP直接暴露给外部网络,以便外部可以直接通过Pod IP来访问容器,需要将对应子网的natOutgoing设置为false。同时需要在外部的路由器上加一条静态路由,将目的地址为子网CIDR的数据包下一跳设置为集群中的任意一台机器。

    子网配置示例:

    vim subnet-gateway.yaml
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    apiVersion: kubeovn.io/v1
    kind: Subnet
    metadata:
      name: subnet-gateway
    spec:
      protocol: IPv4
      default: false
      namespaces:
      - ns1
      - ns2
      cidrBlock: 100.64.0.0/16
      gateway: 100.64.0.1
      excludeIps:
      - 100.64.0.1
      private: false
      gatewayType: distributed
      natOutgoing: false
    
    kubectl create -f subnet-gateway.yaml
  • 虚拟网络环境

    对于虚拟网络由于安全组或Conntrack相关的限制,将容器网络的下一跳设置为集群内一台机器的做法,数据包可能会因为非对称路由的原因被drop。

    在这种情况下推荐将gatewayType设置为centralized并设置对应gatewayNode。外部访问容器需要将容器CIDR的路由下一跳设置为gatewayNode机器,来避免非对称路由的限制。

分享:

    相关文档

    相关产品

close