本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
Terway的默认配置已经能够满足绝大多数场景的需求。对Terway进行配置修改是高危操作,可能会导致Terway运行中止等错误。如果您对Terway配置有特殊需求,例如增加Terway预留IP资源池以优化Pod IP分配速度等,您可参照本文对Terway进行自定义配置。
使用限制
- Terway 配置参数较多,本文仅对参数功能进行说明,不保证所有参数组合在所有场景下均适用,请充分验证后配置。 
- 部分参数支持通过控制台配置,若在控制台找不到该配置,则当前组件版本不支持,请升级 Terway 组件后配置。 
Terway配置示例
集群中Terway组件的配置项ConfigMap文件格式如下。
apiVersion: v1
data:
  10-terway.conf: |     # Terway CNI配置文件参数,其中配置会转换并下发到 /etc/cni/net.d/。请勿修改。
    {
      "cniVersion": "0.4.0",
      "name": "terway",
      "capabilities": {"bandwidth": true},
      "eniip_virtual_type": "datapathv2",
      "host_stack_cidrs": ["169.254.20.10/32"],
      "cilium_args": "",
      "type": "terway"
    }
  disable_network_policy: "false"    # 是否关闭NetworkPolicy功能开关。
  eni_conf: |                        # Terway主要配置参数,例如使用的交换机、安全组配置等。
    {
      "version": "1",
      "max_pool_size": 5,
      "min_pool_size": 0,
      "credential_path": "/var/addon/token-config",
      "enable_eni_trunking": true,
      "vswitches": {"cn-hangzhou-j":["vsw-foo"],"cn-hangzhou-k":["vsw-foo"]},
      "eni_tags": {"ack.aliyun.com":"c7c3cfoo"},
      "service_cidr": "192.168.0.0/16",
      "security_group": "sg-foo",
      "ip_stack": "ipv4",
      "vswitch_selection_policy": "ordered"
    }
  in_cluster_loadbalance: "true"   # 集群内负载均衡,DataPathV2或IPvlan模式下生效,
kind: ConfigMap
metadata:
  name: eni-config
  namespace: kube-system参数说明
主要参数
| 参数 | 说明 | 是否允许修改 | 是否支持通过控制台进行配置 | 
| 
 | Terway CNI配置文件参数,其中配置会转换并下发到  | 否 | 否 | 
| 
 | Terway CNI配置自定义文件参数。更多信息,请参见配置自定义CNI Chain。 | 是 | 否 | 
| 
 | 是否关闭NetworkPolicy功能。 
 | 是 | 是 | 
| 
 | Terway主要配置参数,例如使用的交换机、安全组配置等。 | 是 | 部分允许 | 
| 
 | 是否启用集群内负载均衡,只在DataPathV2或IPvlan模式下生效。更多信息,请参见如何为Terway IPvlan集群开启集群内负载均衡?。 | 是 | 是 | 
10-terway.conf参数
| 参数 | 类型 | 说明 | 是否允许修改 | 是否支持通过控制台进行配置 | 
| 
 | string | CNI配置版本。 | 否 | 否 | 
| 
 | string | CNI插件名称。 | 否 | 否 | 
| 
 | string | CNI插件类型。 | 否 | 否 | 
| 
 | string | CNI capabilities。 | 是 | 否 | 
| 
 | string | 网卡虚拟化方式。 | 否 | 否 | 
| 
 | string | Cilium配置参数。例如 重要  参数支持情况随社区版本变化,不支持向后兼容能力。如需在实际环境中使用这些参数,请确保充分验证后再使用。如升级时Terway Pod无法启动,请删除配置后重试。 | 是 | 是 | 
| 
 | bool | terway-eniip版本需为1.15.0及以上。 是否开启对称路由配置功能。开启后将设置策略路由规则,用于控制网卡流量的源进源出。 
 | 是 | 否 | 
| 
 | map[string]any | terway-eniip版本需为1.15.0及以上。 对称路由配置参数,以下为默认值和参数示例,一般情况下无需配置。 重要  配置错误可能影响存量网络配置,请在测试环境充分验证后使用。 | 是 | 否 | 
eni_conf参数
| 参数 | 类型 | 说明 | 是否允许修改 | 是否支持通过控制台进行配置 | 
| 
 | string | 用于访问OpenAPI的STS Token,仅适用于ACK托管集群。 | 否 | 否 | 
| 
 | string | 集群Service网段。 | 否 | 否 | 
| 
 | map[string][]string | 弹性网卡使用的交换机列表。 | 是 | 是 | 
| 
 | map[string]string | 设置创建弹性网卡时配置的标签。修改配置对存量网卡不生效。 | 否 | 否 | 
| 
 | map[string]string | 过滤Terway管理的弹性网卡。更多详情,请参见为弹性网卡(ENI)配置白名单。 | 是 | 否 | 
| 
 | int | IP资源池,最大保留空闲IP数量。默认值为5。 | 是 | 是 | 
| 
 | int | IP资源池,最少保留空闲IP数量。默认值为0。 | 是 | 是 | 
| 
 | string | 设置创建弹性网卡时使用的安全组。修改配置对存量网卡不生效。 | 是 | 否 | 
| 
 | []string | 设置创建弹性网卡时使用的安全组。最多10个,且安全组类型需一致。若配置则取和 | 是 | 是 | 
| 
 | string | 创建弹性网卡时选择交换机的策略。 
 | 是 | 是 | 
| 
 | bool | 启用EIP迁移功能。更多详情,请参见将EIP从Terway迁移至ack-extend-network-controller。 | 是 | 否 | 
| 
 | string | 集群IP Family模式。不可修改。 | 否 | 否 | 
| 
 | bool | 启用 | 是 | 否 | 
| 
 | float32 | Kubernetes client QPS配置。需要与 | 是 | 是 | 
| 
 | int | Kubernetes client Burst配置。需要与 | 是 | 是 | 
| 
 | string | 创建弹性网卡时设置的资源组。修改配置对存量网卡不生效。 | 是 | 是 | 
| 
 | string | terway-eniip版本需为1.15.0及以上。 IP 资源池同步周期。默认 120 秒。 示例 | 是 | 否 | 
| 
 | string | terway-eniip版本需为1.16.0及以上。 IP 地址在被回收前,必须保持空闲的时间长度。 示例: 说明  在回收前,如果有Pod创建或者删除,时间将重新计算。 | 是 | 否 | 
| 
 | string | terway-eniip版本需为1.16.0及以上。 两次回收检查之间的时间间隔。 示例: | 是 | 否 | 
| 
 | int | terway-eniip版本需为1.16.0及以上。 单次批量回收的最大 IP 数量。取值范围[1, 10]。 示例: | 是 | 否 | 
| 
 | string | terway-eniip版本需为1.16.0及以上。 用于随机化回收时间的抖动因子。取值范围[0.0, 1.0]。 示例: | 是 | 否 | 
配置方法
通过控制台配置
对于部分常用参数,您可通过控制台进行配置。控制台会对内容进行校验,并拦截格式不匹配的参数。
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理。 
- 单击网络页签,然后单击terway-eniip卡片的配置。 
- 在弹出的面板,对参数进行配置,然后单击右下方的确认。 
使用kubectl配置
部分参数不会显示在控制台上,您可通过kubectl对这些参数进行配置。
使用kubectl对Terway进行配置是高危操作,kubectl无法对输入内容进行校验,输入不正确的参数可能会导致Terway运行中止等错误。请您确保对配置有充分理解后再进行修改。
- 通过获取集群KubeConfig并通过kubectl工具连接集群,执行如下命令配置高级参数。 - kubectl edit cm -n kube-system eni-config
- 完成配置后,请保存并退出。然后,执行如下命令更新配置。 - kubectl rollout restart -n kube-system daemonset.apps/terway-eniip