默認情況下,系統只為ECI Pod(即ECI實例)分配一個私網IP,如果您的ECI Pod有連接公網的需求,例如需要拉取公網鏡像等,您可以為其綁定EIP,或者在所屬VPC中創建公網NAT網關,以實現ECI Pod與公網互通。
背景信息
為ECI實例配置公網連接時,支持以下兩種方式:
方式 | 說明 | 適用場景 |
綁定EIP | EIP是獨立購買的可單獨持有的公網IP地址,可以為綁定的ECI實例提供公網服務。更多信息,請參見什么是彈性公網IP和EIP計費概述。 | 單個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均不會生效。
配置示例如下:
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
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
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實例使用,使其能夠面向公網提供服務。 |
在專有網絡控制臺創建公網NAT網關。具體操作,請參見創建和管理公網NAT網關實例。
如果您的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功能訪問公網。
如果您的ECI實例需要面向公網提供服務,您需要創建DNAT條目。具體操作,請參見創建和管理DNAT條目。
創建時需要注意的參數如下:
參數
描述
選擇公網IP地址
選擇NAT網關綁定的EIP,用于公網訪問。
選擇私網IP地址
選擇要通過DNAT規則進行公網通信的ECI實例,支持指定ECI實例對應的彈性網卡,或者手動輸入ECI實例的私網IP。
端口設置
選擇DNAT映射的方式:
任意端口:該方式輸入IP映射。任何訪問NAT網關所綁定EIP的請求都將轉發到目標ECI實例。
具體端口:該方式輸入端口映射。NAT網關會將以指定協議和端口訪問NAT網關所綁定EIP的請求轉發到目標ECI實例的指定端口上。