全部產品
Search
文件中心

Elastic Container Instance:為ECI Pod配置公網串連

更新時間:Jul 06, 2024

預設情況下,系統只為ECI Pod(即ECI執行個體)分配一個私網IP,如果您的ECI Pod有串連公網的需求,例如需要拉取公網鏡像等,您可以為其綁定EIP,或者在所屬VPC中建立公網NAT Gateway,以實現ECI Pod與公網互連。

背景資訊

為ECI執行個體配置公網串連時,支援以下兩種方式:

方式

說明

適用情境

綁定EIP

EIP是獨立購買的可單獨持有的公網IP地址,可以為綁定的ECI執行個體提供公網服務。更多資訊,請參見什麼是Elastic IP AddressEIP計費概述

單個ECI執行個體。

例如:您有一個ECI執行個體用於部署Nginx服務,在建立執行個體時,您需要為該執行個體綁定EIP。當Nginx啟動時,將自動暴露80連接埠到EIP。您可以通過EIP地址加連接埠的方式訪問Nginx服務。

在所屬VPC中建立公網NAT Gateway

NAT Gateway是一種網路位址轉譯服務,提供NAT代理(SNAT和DNAT)能力。更多資訊,請參見什麼是NAT Gateway公網NAT Gateway計費

多個ECI執行個體。

例如:您有多個ECI執行個體需要從Docker Hub拉取鏡像,由於ECI預設不提供公網連結進行公網鏡像的拉取,您需要在執行個體所屬VPC中建立公網NAT Gateway並完成規則配置,否則無法拉取鏡像。

重要

為ECI執行個體配置公網串連時,請確保ECI執行個體所屬的安全性群組已允許存取相關地址和連接埠。更多資訊,請參見添加安全性群組規則

為ECI執行個體綁定EIP

建立ECI Pod時,您可以在Pod metadata中添加Annotation來綁定已有EIP,或者自動建立並綁定一個EIP。

說明

EIP只支援為所綁定的ECI執行個體提供公網服務,一個EIP只能綁定一個ECI執行個體。如果您有多個ECI執行個體需要串連公網,您需要分別為其綁定EIP,或者在所屬VPC中建立公網NAT Gateway。

  • 綁定已有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 Gateway

在VPC中建立公網NAT Gateway後,公網NAT Gateway可以提供NAT代理(SNAT和DNAT)功能,使得該VPC中的ECI執行個體可以串連公網。

功能

說明

SNAT

可以為VPC中沒有公網IP的ECI執行個體提供訪問公網的代理服務。

DNAT

可以將公網NAT Gateway綁定的EIP映射給VPC中的ECI執行個體使用,使其能夠面向公網提供服務。

  1. 專用網路控制台建立公網NAT Gateway。具體操作,請參見建立和管理公網NAT Gateway執行個體

  2. 如果您的ECI執行個體需要訪問公網,您需要建立SNAT條目。具體操作,請參見建立和管理SNAT條目

    建立時需要注意的參數如下:

    參數

    描述

    SNAT條目粒度

    請結合業務組網和安全性等因素進行選擇:

    • VPC粒度:NAT Gateway所屬VPC內的所有ECI執行個體均可以通過SNAT功能訪問公網。

    • 交換器粒度:所選交換器下的ECI執行個體均可以通過SNAT功能訪問公網。

    • 自訂網段粒度:指定網段內的ECI執行個體均可以通過SNAT功能訪問公網。

    選擇交換器

    當SNAT條目粒度選擇交換器粒度時,選擇用於建立ECI執行個體的交換器,支援配置多個。

    自訂網段

    當SNAT條目粒度選擇自訂網段粒度時,設定要訪問公網的ECI執行個體的所屬網段。

    選擇公網IP地址

    選擇NAT Gateway綁定的EIP(單個或多個),用於訪問公網。

    說明

    如果ECI執行個體已經綁定了EIP,則優先使用ECI執行個體綁定的EIP來訪問公網,而不會使用NAT Gateway的SNAT功能訪問公網。

  3. 如果您的ECI執行個體需要面向公網提供服務,您需要建立DNAT條目。具體操作,請參見建立和管理DNAT條目

    建立時需要注意的參數如下:

    參數

    描述

    選擇公網IP地址

    選擇NAT Gateway綁定的EIP,用於公網訪問。

    選擇私網IP地址

    選擇要通過DNAT規則進行公網通訊的ECI執行個體,支援指定ECI執行個體對應的彈性網卡,或者手動輸入ECI執行個體的私網IP。

    連接埠設定

    選擇DNAT映射的方式:

    • 任意連接埠:該方式輸入IP映射。任何訪問NAT Gateway所綁定EIP的請求都將轉寄到目標ECI執行個體。

    • 具體連接埠:該方式輸入連接埠映射。NAT Gateway會將以指定協議和連接埠訪問NAT Gateway所綁定EIP的請求轉寄到目標ECI執行個體的指定連接埠上。