すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:特定の世代の ECS インスタンスファミリを指定または除外してポッドを作成する

最終更新日:Dec 28, 2024

vCPU 数とメモリサイズを指定して Elastic Container Instance ポッドを作成する場合、特定の Elastic Compute Service (ECS) インスタンスタイプが必要になる場合があります。たとえば、g6 や c6 などの第6世代 ECS インスタンスファミリのみを使用してポッドを作成したい場合があります。この場合、k8s.aliyun.com/eci-instance-generation アノテーションを追加して、必要な世代の ECS インスタンスファミリを指定できます。このトピックでは、ポッドを作成するときに特定の世代の ECS インスタンスファミリを指定または除外する方法について説明します。

機能の説明

vCPU 数とメモリサイズを指定して Elastic Container Instance ポッドを作成する場合、システムはさまざまな ECS インスタンスタイプを使用して作成をサポートし、vCPU とメモリの要件を満たし、十分なリソースを持つインスタンスタイプを自動的に選択します。この場合、k8s.aliyun.com/eci-instance-generation アノテーションを追加して、特定の世代の ECS インスタンスファミリを指定または除外できます。

  • 特定の世代の ECS インスタンスファミリを指定した場合、システムは指定された世代の ECS インスタンスファミリからのみ ECS インスタンスタイプを選択します。指定された世代の ECS インスタンスファミリのリソースが不足している場合、システムはポッドを作成しません。

  • 特定の世代の ECS インスタンスファミリを除外した場合、システムは Elastic Container Instance でサポートされている他の世代の ECS インスタンスファミリから ECS インスタンスタイプを選択してポッドを作成します。

次の表は、ポッドの作成時に指定または除外できる ECS インスタンスファミリの世代を示しています。また、各世代の ECS インスタンスファミリについても説明しています。

ECS インスタンスファミリの世代

ECS インスタンスファミリ

8

g8i、c8i、r8i、hfg8i、hfc8i、hfr8i

7

g7、c7、r7、hfg7、hfc7、hfr7、g7ne

6

g6e、g6、c6e、c6、r6e、r6、hfc6、hfg6

5

u1、g5、g5ne、c5、r5、ic5、hfc5、hfg5

4

sn2ne、sn1ne、se1ne、se1

ECS インスタンスファミリの詳細については、以下のトピックを参照してください。

注意事項

  • 特定の世代の ECS インスタンスファミリに基づいて作成されたポッドは、実際に使用された ECS インスタンスタイプに基づいて課金されます。指定された vCPU 数とメモリサイズに基づいて課金されるわけではありません。

    重要

    ポッドの作成後、kubectl describe pod コマンドを実行して、ポッドの YAML 詳細を表示できます。k8s.aliyun.com/eci-instance-spec フィールドの値は、ポッドで使用されている ECS インスタンスタイプを示します。ポッドは、ECS インスタンスタイプに基づいて課金されます。

  • ECS インスタンスファミリの世代を指定または除外すると、システムは特定のインスタンスタイプを自動的に選択できなくなります。たとえば、gn6i インスタンスファミリのインスタンスタイプなどの GPU アクセラレーテッドインスタンスタイプ、および i2g インスタンスファミリのインスタンスタイプなどのローカルディスクを搭載したインスタンスタイプは自動的に選択できません。特定の ECS インスタンスタイプを使用する場合は、ECS インスタンスタイプを指定してポッドを作成します。詳細については、ECS インスタンスタイプを指定してポッドを作成する を参照してください。

  • プリエンティブルな Elastic Container Instance を作成するために、特定の世代の ECS インスタンスファミリを指定または除外できます。このシナリオでは、システムは市場価格と設定した ECS インスタンスファミリの世代の順序に基づいて、最適な ECS インスタンスタイプを選択します。ECS インスタンスファミリの世代に厳密な要件がある場合は、1 つの世代のみを指定することをお勧めします。

  • 特定の世代の ECS インスタンスファミリを指定または除外する機能は、vCPU 数とメモリサイズを指定してポッドを作成する場合にのみ有効になります。ポッドを作成するときに最初に ECS インスタンスタイプを指定した場合、この機能は有効になりません。

構成の説明

k8s.aliyun.com/eci-instance-generation の有効な値は、ECS インスタンスファミリの世代です。次の点に注意してください。

  • 複数の世代を設定できます。有効な値:4、5、6、7。

  • ECS インスタンスファミリの世代の前にマイナス記号 (-) を追加すると、その世代は除外されます。

    たとえば、k8s.aliyun.com/eci-instance-generation: "-5,-4" は、第5世代と第4世代の ECS インスタンスファミリを除外し、第7世代または第6世代の ECS インスタンスファミリを使用することを指定します。

  • システムは、指定された順序に基づいて指定された世代を選択します。

    たとえば、k8s.aliyun.com/eci-instance-generation: "6,5" アノテーションは、システムが優先的に第6世代の ECS インスタンスファミリを使用することを指定します。必要な vCPU とメモリの仕様を満たす第6世代の ECS インスタンスファミリのリソースが不足している場合は、第5世代の ECS インスタンスファミリが使用されます。第5世代の ECS インスタンスファミリのリソースも不足している場合は、ポッドは作成されません。

k8s.aliyun.com/eci-instance-generation アノテーションを使用する前に、次のいずれかの方法で vCPU 数とメモリサイズを指定する必要があります。

  • コンテナの limits パラメータまたは requests パラメータを指定します。limits パラメータを指定することをお勧めします。

  • ポッドのメタデータに k8s.aliyun.com/eci-use-specs アノテーションを追加します。

例 1:特定の世代の ECS インスタンスファミリを指定する

パラメータ

効果

  • limits パラメータを設定して、vCPU とメモリリソース (2 vCPU と 4 GiB のメモリ) を定義します。

  • k8s.aliyun.com/eci-instance-generation: "6,5" アノテーションが設定されています。このアノテーションは、システムが第6世代の ECS インスタンスファミリ、次に第5世代の ECS インスタンスファミリを使用することを指定します。

  • システムは、vCPU とメモリの仕様要件を満たす第6世代の ECS インスタンスファミリから優先的にインスタンスタイプを選択します。

  • 第6世代の ECS インスタンスファミリのリソースが不足している場合、システムは第5世代の ECS インスタンスファミリからインスタンスタイプを選択します。

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-instance-generation: "6,5"    # 第6世代と第5世代の ECS インスタンスファミリを順番に使用することを指定します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: "2"       # 最大 vCPU 数を指定します。
            memory: "4Gi"  # 最大メモリサイズを指定します。

例 2:特定の世代の ECS インスタンスファミリを除外する

パラメータ

効果

  • k8s.aliyun.com/eci-use-specs: "2-4Gi" アノテーションを設定して、vCPU とメモリリソース (2 vCPU、4 GiB のメモリ) を定義します。

  • k8s.aliyun.com/eci-instance-generation: "-5,-4" アノテーションを設定して、第5世代と第4世代の ECS インスタンスファミリを除外します。

システムは、vCPU とメモリの仕様要件を満たす第7世代と第6世代の ECS インスタンスファミリからインスタンスタイプを選択します。

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-use-specs: "2-4Gi"                    #あいまい検索モードで vCPU とメモリの仕様を指定します。
        k8s.aliyun.com/eci-instance-generation: "-5,-4"          # 第5世代と第4世代の ECS インスタンスファミリを除外します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

例 3:特定の世代の ECS インスタンスファミリを指定し、特定の ECS インスタンスファミリを除外する

パラメータ

効果

  • k8s.aliyun.com/eci-use-specs: "2-4Gi" アノテーションを設定して、vCPU とメモリリソース (2 vCPU、4 GiB のメモリ) を定義します。

  • k8s.aliyun.com/eci-instance-generation: "6,5" アノテーションが設定されています。このアノテーションは、システムが第6世代の ECS インスタンスファミリ、次に第5世代の ECS インスタンスファミリを使用することを指定します。

  • k8s.aliyun.com/eci-instance-family: "-ecs.hfg5" アノテーションを設定して、ecs.hfg5 インスタンスファミリを除外します。

  • システムは、vCPU とメモリの仕様要件を満たす第6世代の ECS インスタンスファミリから優先的にインスタンスタイプを選択します。

  • 第6世代の ECS インスタンスファミリのリソースが不足している場合、システムは Elastic Container Instance でサポートされている第5世代の ECS インスタンスファミリ (ecs.hfg5 を除く) からインスタンスタイプを選択します。

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-use-specs: "2-4Gi"                   # vCPU とメモリの仕様を指定します。
        k8s.aliyun.com/eci-instance-generation: "6,5"           # 第6世代と第5世代の ECS インスタンスファミリを順番に使用することを指定します。
        k8s.aliyun.com/eci-instance-family: "-ecs.hfg5"           # ecs.hfg5 インスタンスファミリを除外します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

例 4:特定の世代の ECS インスタンスファミリと特定の ECS インスタンスファミリを除外する

パラメータ

効果

  • k8s.aliyun.com/eci-use-specs: "2-4Gi" アノテーションを設定して、vCPU とメモリリソース (2 vCPU、4 GiB のメモリ) を定義します。

  • k8s.aliyun.com/eci-instance-generation: "-5,-4" アノテーションを設定して、第5世代と第4世代の ECS インスタンスファミリを除外します。

  • k8s.aliyun.com/eci-instance-family: "-ecs.hfg6" アノテーションを設定して、ecs.hfg6 インスタンスファミリを除外します。

システムは、vCPU とメモリの仕様要件を満たす第7世代と第6世代の ECS インスタンスファミリ (ecs.hfg6 を除く) からインスタンスタイプを選択します。

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-use-specs: "2-4Gi"                    # あいまい検索モードで vCPU とメモリの仕様を指定します。
        k8s.aliyun.com/eci-instance-generation: "-5,-4"          # 第5世代と第4世代の ECS インスタンスファミリを除外します。
        k8s.aliyun.com/eci-instance-family: "-ecs.hfg6"            # ecs.hfg6 インスタンスファミリを除外します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

例 5:無効な構成

特定の世代の ECS インスタンスファミリを指定または除外する機能は、vCPU 数とメモリサイズを指定してポッドを作成する場合にのみ有効になります。ECS インスタンスタイプを指定してポッドを作成した場合、この機能は有効になりません。指定された世代の ECS インスタンスファミリが有効にならない場合は、IgnoreInstanceTypeFeatures イベントが生成されます。

イベント名

タイプ

イベントメッセージ

イベントの説明

IgnoreInstanceTypeFeatures

警告

[eci.containergroup]指定された仕様 [%s] が ECS インスタンスタイプのみに対応しているため、インスタンスタイプの機能は無視されます。

k8s.aliyun.com/eci-use-specs アノテーションは ECS インスタンスタイプを定義します。このため、ECS インスタンスファミリの世代を指定する他のアノテーションは無視されます。

次の例では、第6世代の ECS インスタンスファミリを指定するアノテーションは自動的に無視され、ecs.c5.large インスタンスタイプのみを使用してポッドが作成されます。

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-use-specs: "ecs.c5.large"   # 特定の ECS インスタンスタイプを指定します。
        k8s.aliyun.com/eci-instance-generation: "6"    # 特定の世代の ECS インスタンスファミリを指定します。この設定は有効になりません。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80