为ECI Pod配置公网连接

默认情况下,系统只为ECI Pod(即ECI实例)分配一个私网IP,如果您的ECI Pod有连接公网的需求,例如需要拉取公网镜像等,您可以为其绑定EIP,或者在所属VPC中创建公网NAT网关,以实现ECI Pod与公网互通。

背景信息

为ECI实例配置公网连接时,支持以下两种方式:

方式

说明

适用场景

绑定EIP

EIP是独立购买的可单独持有的公网IP地址,可以为绑定的ECI实例提供公网服务。更多信息,请参见什么是弹性公网IPEIP计费概述

单个ECI实例。

例如:您有一个ECI实例用于部署Nginx服务,在创建实例时,您需要为该实例绑定EIP。当Nginx启动时,将自动暴露80端口到EIP。您可以通过EIP地址加端口的方式访问Nginx服务。

在所属VPC中创建公网NAT网关

NAT网关是一种网络地址转换服务,提供NAT代理(SNAT和DNAT)能力。更多信息,请参见什么是NAT网关公网NAT网关计费

多个ECI实例。

例如:您有多个ECI实例需要从Docker Hub拉取镜像,由于ECI默认不提供公网链接进行公网镜像的拉取,您需要在实例所属VPC中创建公网NAT网关并完成规则配置,否则无法拉取镜像。

重要

为ECI实例配置公网连接时,请确保ECI实例所属的安全组已放行相关地址和端口。更多信息,请参见添加安全组规则

为ECI实例绑定EIP

创建ECI Pod时,您可以在Pod metadata中添加Annotation来绑定已有EIP,或者自动创建并绑定一个EIP。

说明

EIP只支持为所绑定的ECI实例提供公网服务,一个EIP只能绑定一个ECI实例。如果您有多个ECI实例需要连接公网,您需要分别为其绑定EIP,或者在所属VPC中创建公网NAT网关。

  • 绑定已有EIP

    Annotation

    示例值

    说明

    k8s.aliyun.com/eci-eip-instanceid

    "eip-bp1q5n8cq4p7f6dzu****"

    指定EIP,将其绑定到ECI Pod上。

  • 自动创建并绑定EIP

    Annotation

    示例值

    说明

    k8s.aliyun.com/eci-with-eip

    "true"

    配置为true表示自动创建一个EIP,并将其绑定到ECI Pod上。

    k8s.aliyun.com/eip-bandwidth

    "10"

    设置EIP带宽。单位为Mbps。默认为5 Mbps。

    k8s.aliyun.com/eip-common-bandwidth-package-id

    "cbwp-2zeukbj916scmj51m****"

    绑定已有的共享带宽。更多信息,请参见共享带宽

    k8s.aliyun.com/eip-isp

    BGP

    设置EIP线路类型,仅按量付费的EIP支持指定。取值范围:

    • BGP(默认值):BGP(多线)线路

    • BGP_PRO:BGP(多线)精品线路

    更多信息,请参见EIP线路类型

    k8s.aliyun.com/eip-internet-charge-type

    PayByTraffic

    设置EIP的计量方式。取值范围:

    • PayByBandwidth:按带宽计费

    • PayByTraffic:按流量计费

    更多信息,请参见EIP计费方式

    k8s.aliyun.com/eip-public-ip-address-pool-id

    pippool-bp187arfugi543y1s****

    指定IP地址池ID。 EIP将从该IP地址池中分配。更多信息,请参见创建和管理IP地址池

重要
  • Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。

  • 仅支持在创建ECI Pod时添加ECI相关Annotation来生效ECI功能,更新ECI Pod时添加或者修改ECI相关Annotation均不会生效。

配置示例如下:

  • 示例一:绑定已有EIP

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
          annotations:
            k8s.aliyun.com/eci-eip-instanceid: "eip-bp1q5n8cq4p7f6dzu****"    # 指定已有的EIP进行绑定
        spec:
          containers:
          - name: nginx
            image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
  • 示例二:自动创建EIP,并设置EIP带宽

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
          annotations:
            k8s.aliyun.com/eci-with-eip: "true"   # 自动创建并绑定EIP
            k8s.aliyun.com/eip-bandwidth: "10"   # 设置EIP带宽
        spec:
          containers:
          - name: nginx
            image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
  • 示例三:自动创建EIP,并绑定共享带宽

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
          annotations:
            k8s.aliyun.com/eci-with-eip: "true"   #自动创建并绑定EIP
            k8s.aliyun.com/eip-common-bandwidth-package-id: "cbwp-2zeukbj916scmj51m****"  # 绑定共享带宽
        spec:
          containers:
          - name: nginx
            image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80

在所属VPC中创建公网NAT网关

在VPC中创建公网NAT网关后,公网NAT网关可以提供NAT代理(SNAT和DNAT)功能,使得该VPC中的ECI实例可以连接公网。

功能

说明

SNAT

可以为VPC中没有公网IP的ECI实例提供访问公网的代理服务。

DNAT

可以将公网NAT网关绑定的EIP映射给VPC中的ECI实例使用,使其能够面向公网提供服务。

  1. 专有网络控制台创建公网NAT网关。具体操作,请参见创建和管理公网NAT网关实例

  2. 如果您的ECI实例需要访问公网,您需要创建SNAT条目。具体操作,请参见创建和管理SNAT条目

    创建时需要注意的参数如下:

    参数

    描述

    SNAT条目粒度

    请结合业务组网和安全性等因素进行选择:

    • VPC粒度:NAT网关所属VPC内的所有ECI实例均可以通过SNAT功能访问公网。

    • 交换机粒度:所选交换机下的ECI实例均可以通过SNAT功能访问公网。

    • 自定义网段粒度:指定网段内的ECI实例均可以通过SNAT功能访问公网。

    选择交换机

    当SNAT条目粒度选择交换机粒度时,选择用于创建ECI实例的交换机,支持配置多个。

    自定义网段

    当SNAT条目粒度选择自定义网段粒度时,设置要访问公网的ECI实例的所属网段。

    选择公网IP地址

    选择NAT网关绑定的EIP(单个或多个),用于访问公网。

    说明

    如果ECI实例已经绑定了EIP,则优先使用ECI实例绑定的EIP来访问公网,而不会使用NAT网关的SNAT功能访问公网。

  3. 如果您的ECI实例需要面向公网提供服务,您需要创建DNAT条目。具体操作,请参见创建和管理DNAT条目

    创建时需要注意的参数如下:

    参数

    描述

    选择公网IP地址

    选择NAT网关绑定的EIP,用于公网访问。

    选择私网IP地址

    选择要通过DNAT规则进行公网通信的ECI实例,支持指定ECI实例对应的弹性网卡,或者手动输入ECI实例的私网IP。

    端口设置

    选择DNAT映射的方式:

    • 任意端口:该方式输入IP映射。任何访问NAT网关所绑定EIP的请求都将转发到目标ECI实例。

    • 具体端口:该方式输入端口映射。NAT网关会将以指定协议和端口访问NAT网关所绑定EIP的请求转发到目标ECI实例的指定端口上。