上云无忧 > 文档中心 > 百度智能云容器引擎服务 CCE IP Masquerade Agent 用户指南
容器引擎服务CCE
百度智能云容器引擎服务 CCE IP Masquerade Agent 用户指南

文档简介:
本文档会详细展示如何配置 ip-masq-agent, 用户可以灵活地将各种配置进行组合,满足容器流量出节点时身份的选择。 关键术语: NAT (网络地址解析) 是一种通过修改 IP 地址头中的源和/或目标地址信息将一个 IP 地址重新映射到另一个 IP 地址的方法。通常由执行 IP 路由的设备执行。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

本文档会详细展示如何配置 ip-masq-agent, 用户可以灵活地将各种配置进行组合,满足容器流量出节点时身份的选择。

快速开始

关键术语

  • NAT (网络地址解析) 是一种通过修改 IP 地址头中的源和/或目标地址信息将一个 IP 地址重新映射到另一个 IP 地址的方法。通常由执行 IP 路由的设备执行。
  • Masquerade NAT 的一种形式,通常用于执行多对一地址转换,其中多个源 IP 地址被隐藏在单个地址后面,该地址通常是执行 IP 路由的设备。在 Kubernetes 中,这是节点的 IP 地址。
  • CIDR (无类别域间路由) 基于可变长度子网掩码,允许指定任意长度的前缀。CIDR 引入了一种新的 IP 地址表示方法,现在通常称为CIDR表示法,其中地址或路由前缀后添加一个后缀,用来表示前缀的位数,例如 192.168.2.0/24。

原理介绍

ip-masq-agent 以 daemonset 形式部署,在每个节点上启动一个代理程序。代理程序通过配置 iptables 规则,在将容器流量发送到集群节点的 IP 和集群 IP 范围之外的目标时, 可以选择以容器自己的 IP 地址或伪装成节点的 IP 地址作为出向流量的源地址。代理程序为每隔 60 秒从 /etc/config/ip-masq-agent 重新加载其配置,更新 iptables 规则。

代理程序配置的的 iptables 规则是在 POSTROUTING 链上添加自定义链 IP-MASQ-AGENT, 通过判断 IP-MASQ-AGENT 链中每一条规则是否匹配,来决定出向流量是否需要进行伪装。

CCE 集群默认部署 ip-masq-agent 组件。默认情况下,代理配置为将 RFC 1918 指定的三个私有 IP 范围视为非伪装 CIDR。 这些范围是 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。 默认情况下,代理程序还将链路本地地址(169.254.0.0/16)视为非伪装 CIDR。

高级配置

ip-masq-agent 的配置来自于 configMap,可以通过 kubectl edit cm cce-ip-masq-agent -n kube-system 来查看或修改配置。修改完配置后,过一段时间后(默认配置下约 60s)配置生效,代理程序会自动更新 iptables 规则。

常用的配置选项如下:

  • masqueradeCIDRs []string: 用于指定伪装范围
  • nonMasqueradeCIDRs []string: 用于指定非伪装范围
  • masqOutBound bool: 排除 IPv4 nonMasqueradeCIDRs,是否伪装其他所有范围
  • masqOutBoundIPv6 bool: 排除 IPv6 nonMasqueradeCIDRs,是否伪装其他所有范围
  • masqLinkLocal bool: 是否伪装到的流量 169.254.0.0/16
  • masqLinkLocalIPv6 bool: 是否伪装到的流量 fe80::/10
  • resyncInterval string: 代理重新加载配置的时间间隔

需要说明的是,IP-MASQ-AGENT 链中,masqueradeCIDRs 生成的规则总是在 nonMasqueradeCIDRs 生成的规则之前,配置 masqueradeCIDRs 通常是为了针对 nonMasqueradeCIDRs 中某个 IP 地址或者网段进行伪装。

典型场景

容器以自己身份出节点

配置:

nonMasqueradeCIDRs:
      - 10.0.0.0/8
      - 172.16.0.0/12
      - 100.64.230.0/24
      - 192.168.0.0/16
      - fc00::/7
    masqOutBound: false
    masqOutBoundIPv6: true
    masqLinkLocal: false
    masqLinkLocalIPv6: false
    resyncInterval: 60s

IP-MASQ-AGENT 链规则:

Chain IP-MASQ-AGENT (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       0.0.0.0/0            169.254.0.0/16     
  /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            10.0.0.0/8       
    /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    1    71 RETURN     all  --  *      *       0.0.0.0/0            172.16.0.0/12    
    /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            100.64.230.0/24   
   /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            192.168.0.0/16    
   /* ip-masq-agent: local traffic is not subject to MASQUERADE */

该配置下,容器通常采用 NAT 网关与 VPC 路由牵引的方式访问公网。

容器伪装成节点身份

该配置通常应用于以下场景:

  • 容器希望以节点的公网 IP 访问公网

配置:

nonMasqueradeCIDRs:
      - 10.0.0.0/8
      - 172.16.0.0/12
      - 100.64.230.0/24
      - 192.168.0.0/16
      - fc00::/7
    masqOutBound: true
    masqOutBoundIPv6: true
    masqLinkLocal: false
    masqLinkLocalIPv6: false
    resyncInterval: 60s

IP-MASQ-AGENT 链规则:

Chain IP-MASQ-AGENT (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       0.0.0.0/0            169.254.0.0/16   
    /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            10.0.0.0/8        
   /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    4   240 RETURN     all  --  *      *       0.0.0.0/0            172.16.0.0/12     
   /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            100.64.230.0/24    
  /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            192.168.0.0/16     
  /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    1    76 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0         
   /* ip-masq-agent: outbound traffic is subject to MASQUERADE (must be last in chain) */

该配置下,只要节点能否访问公网,容器就能够访问公网。

容器仅针对某些地址伪装成节点

该配置通常应用于以下场景:

  • 集群内的容器希望访问和当前集群是处于同一个 VPC 内有白名单或安全组(例如仅允许 VPC 内 IP 进行访问)的虚机或服务
  • 集群内的容器希望访问与当前 VPC 建立对等连接或专线的另一个 VPC 或私有网络空间内的虚机上的服务

例如用户的网络拓扑中, 10.10.10.10/32 是某个服务 VIP,只能从节点进行访问。

配置:

masqueradeCIDRs:
      - 10.10.10.10/32
    nonMasqueradeCIDRs:
      - 10.0.0.0/8
      - 172.16.0.0/12
      - 100.64.230.0/24
      - 192.168.0.0/16
      - fc00::/7
    masqOutBound: false
    masqOutBoundIPv6: true
    masqLinkLocal: false
    masqLinkLocalIPv6: false
    resyncInterval: 60s

IP-MASQ-AGENT 链规则:

Chain IP-MASQ-AGENT (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      *       0.0.0.0/0            10.10.10.10    
      /* ip-masq-agent: specific outbound traffic is subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            169.254.0.0/16   
    /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            10.0.0.0/8       
    /* ip-masq-agent: local traffic is not subject to MASQUERADE */
  225 15788 RETURN     all  --  *      *       0.0.0.0/0            172.16.0.0/12     
   /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            100.64.230.0/24  
    /* ip-masq-agent: local traffic is not subject to MASQUERADE */
    0     0 RETURN     all  --  *      *       0.0.0.0/0            192.168.0.0/16    
   /* ip-masq-agent: local traffic is not subject to MASQUERADE */

相似文档
  • 本文档会描述在对等连接场景下, 跨 VPC 的集群如何配置 VPC 路由,以便不同集群可以在节点、容器层面实现互相连通。 前置条件: 对等连接已经创建完成。 对等连接提供了VPC级别的网络互联服务,帮助用户实现在不同虚拟网络之间的流量互通。在本文档中,默认用户已经创建好对等连接以及 VPC 中的端点。 【百度智能云】对等连接
  • 在 VPC Route 网络模式下, Pod 的 IP 地址网段通常与节点 IP 地址网段不同。 在集群默认配置下,当非 HostNetwork 网络模式的 Pod 访问私有 IP 地址段内的 IP (10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16)时,数据包的源 IP 是 Pod IP。这导致当访问目的地址是集群外的虚机或服务时,会出现网络不通的情况。 对于这些情况,我们需要配置 ip-masq-agent 以满足网络访问需求。
  • 注意:以下内容仅针对使用 “VPC-CNI”模式的集群。 概述: VPC-CNI 模式下,容器的 IP 来自 VPC 中的子网。随着集群规模扩大,ENI 子网中的 IP 可能耗尽,利用 CNI 提供的动态配置功能,可以给集群增加新的 ENI 子网。
  • K8S 配置字典(ConfigMap): ConfigMap 是 K8S 的一种 API 对象,用来将非机密性的数据保存到健值对中,用户在 CCE 可以通过页面或 kubectl 方式管理 ConfigMap。
  • 保密字典(Secret): Secret 是 K8S 提供一种 API 资源,用来保存敏感信息,例如密码、OAuth 令牌和 SSH 密钥等,用户可在 CCE 上通过 Console 及 kubectl 方式管理 Secret 资源。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部