连接公网

如果您的ECI实例(即ECI Pod)有连接公网的需求,则需要配置NAT网关或者弹性公网IP,并支付相应的网络费用。本文介绍如何为ECI实例绑定EIP,或者为ECI实例所属VPC绑定NAT网关,以实现ECI实例与公网互通。

背景信息

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

方式

说明

费用

绑定EIP

EIP是独立购买的可单独持有的公网IP地址,可以为绑定的ECI实例提供公网服务。

EIP支持包年包月和按量付费,按固定带宽或者使用流量计费。EIP绑定至ECI实例时,免除配置费用,但可能收取绑定费用。更多信息,请参见EIP计费说明

绑定NAT网关

NAT网关是可独立购买的网关产品,绑定EIP后,可以为关联VPC下的所有ECI实例提供公网服务。

NAT网关支持包年包月和按量付费。NAT网关需绑定EIP后才能具备公网能力,即除NAT网关费用外,您还需支付EIP费用。更多信息,请参见NAT网关计费说明

您可以根据业务需要,选择合适的方式来配置公网服务:

  • 示例场景一:单个ECI实例配置Nginx外网访问

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

  • 示例场景二:多个ECI实例拉取Docker Hub镜像

    ECI默认不提供外部公网链路进行公网镜像的拉取。如果您有多个ECI实例需要从Docker Hub拉取镜像,您需要为ECI实例所属的VPC绑定NAT网关来实现公网访问,否则镜像将拉取失败。

说明

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

方式一:为ECI实例绑定EIP

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

说明

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

相关Annotation如下:

Annotation

示例值

说明

k8s.aliyun.com/eci-eip-instanceid

"eip-bp1q5n8cq4p7f6dzu****"

绑定已有的EIP。

k8s.aliyun.com/eci-with-eip

"true"

是否自动创建并绑定EIP。

k8s.aliyun.com/eip-bandwidth

"10"

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

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

"cbwp-2zeukbj916scmj51m****"

绑定已有的共享带宽包。

k8s.aliyun.com/eip-isp

BPG

设置EIP的线路类型。取值范围:

  • BPG:BGP(多线)线路

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

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

BPG

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

  • PayByBandwidth:按带宽计费

  • PayByTraffic:按流量计费

配置示例如下:

  • 示例一:绑定已有EIP

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 2
      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: 2
      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: 2
      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网关绑定EIP,使其能够提供NAT代理(SNAT和DNAT)功能:

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

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

操作步骤如下:

  1. 登录专有网络控制台

  2. 在顶部菜单栏左上角处,选择地域。

  3. NAT网关页面,创建NAT网关。

    1. 单击创建NAT网关

    2. 完成购买NAT网关相关的参数配置。

      配置时,请选择ECI实例所属的地域和可用区,以及对应的VPC和交换机。更多信息,请参见购买NAT网关

    3. 确认配置信息和费用,单击立即购买

  4. 弹性公网IP页面,创建EIP。

    1. 单击创建弹性公网IP

    2. 完成购买EIP相关的参数配置。

      配置时,请选择ECI实例所属的地域。更多信息,请参见申请新EIP

    3. 确认配置信息和费用,单击立即购买

  5. 绑定EIP与NAT网关。

    1. NAT网关页面,找到目标NAT网关,单击对应的立即绑定

    2. 在弹出的对话框中选择要绑定的EIP,然后单击确定

  6. 如果您的ECI实例需要访问公网,您需要创建SNAT条目。

    1. NAT网关页面,找到目标NAT网关,单击对应的设置SNAT

    2. 单击创建SNAT条目

    3. 配置SNAT相关条目的参数。

      配置时,需要关注的参数如下表所示。更多信息,请参见创建SNAT实现访问公网服务

      参数

      描述

      SNAT条目粒度

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

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

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

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

      选择交换机

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

      自定义网段

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

      选择公网IP地址

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

    4. 单击确定

    说明

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

  7. 如果您的ECI实例需要面向公网提供服务,您需要创建DNAT条目。

    1. NAT网关页面,找到目标NAT网关,单击对应的设置DNAT

    2. 单击创建DNAT条目

    3. 配置DNAT相关条目的参数。

      配置时,需要关注的参数如下表所示。更多信息,请参见创建DNAT提供公网访问服务

      参数

      描述

      选择公网IP地址

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

      选择私网IP地址

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

      端口设置

      选择DNAT映射的方式:

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

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

    4. 单击确定

阿里云首页 弹性容器实例 相关技术圈