连接公网
如果您的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的线路类型。取值范围:
|
k8s.aliyun.com/eip-internet-charge-type | BPG | 设置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-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实例使用,使其能够面向公网提供服务。
操作步骤如下:
登录专有网络控制台。
在顶部菜单栏左上角处,选择地域。
在NAT网关页面,创建NAT网关。
单击创建NAT网关。
完成购买NAT网关相关的参数配置。
配置时,请选择ECI实例所属的地域和可用区,以及对应的VPC和交换机。更多信息,请参见购买NAT网关。
确认配置信息和费用,单击立即购买。
在弹性公网IP页面,创建EIP。
单击创建弹性公网IP。
完成购买EIP相关的参数配置。
配置时,请选择ECI实例所属的地域。更多信息,请参见申请新EIP。
确认配置信息和费用,单击立即购买。
绑定EIP与NAT网关。
在NAT网关页面,找到目标NAT网关,单击对应的立即绑定。
在弹出的对话框中选择要绑定的EIP,然后单击确定。
如果您的ECI实例需要访问公网,您需要创建SNAT条目。
在NAT网关页面,找到目标NAT网关,单击对应的设置SNAT。
单击创建SNAT条目。
配置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功能访问公网。
如果您的ECI实例需要面向公网提供服务,您需要创建DNAT条目。
在NAT网关页面,找到目标NAT网关,单击对应的设置DNAT。
单击创建DNAT条目。
配置DNAT相关条目的参数。
配置时,需要关注的参数如下表所示。更多信息,请参见创建DNAT提供公网访问服务。
参数
描述
选择公网IP地址
选择NAT网关绑定的EIP,用于公网访问。
选择私网IP地址
选择要通过DNAT规则进行公网通信的ECI实例,支持指定ECI实例对应的弹性网卡,或者手动输入ECI实例的私网IP。
端口设置
选择DNAT映射的方式:
任意端口:该方式输入IP映射。任何访问NAT所绑定EIP的请求都将转发到目标ECI实例。
具体端口:该方式输入端口映射。NAT网关会将以指定协议和端口访问NAT所绑定EIP的请求转发到目标ECI实例的指定端口上。
单击确定。