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

Elastic Container Instance:Podを作成するための特定のECSインスタンスファミリの指定または除外

最終更新日:Dec 28, 2024

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

機能の説明

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

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

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

説明

k8s.aliyun.com/eci-instance-generationアノテーションと共にk8s.aliyun.com/eci-instance-familyアノテーションを使用することで、ECSインスタンスタイプをより細かく制御できます。k8s.aliyun.com/eci-instance-generationは、特定の世代の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インスタンスファミリに基づいて作成された場合、Podの課金は、指定されたvCPUとメモリの仕様ではなく、実際に使用されたECSインスタンスタイプに基づいて行われます。

    重要

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

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

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

  • プリエンティブルなElastic Container Instanceを作成する場合、システムは、指定または除外されたインスタンスファミリに基づいて、最も適切なECSインスタンスタイプを選択します。選択は、インスタンスファミリのソート順とインスタンスタイプの市場価格によって決定され、市場価格はソート順よりも優先されます。ECSインスタンスファミリに厳密な要件がある場合は、1つのインスタンスファミリのみを設定することをお勧めします。

構成の説明

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

  • 複数のインスタンスファミリを設定できます。有効な値:Elastic Container InstanceでサポートされているECSインスタンスファミリ。

  • インスタンスファミリの前にマイナス記号(-)を追加すると、Podの作成時にそのインスタンスファミリが除外されます。

    たとえば、k8s.aliyun.com/eci-instance-family: "-ecs.c6, -ecs.c5"は、ecs.c6およびecs.c5インスタンスファミリが除外されることを指定します。

  • システムは、指定されたインスタンスファミリをソート順に基づいて選択します。

    たとえば、k8s.aliyun.com/eci-instance-family: "ecs.c6, ecs.c5"アノテーションは、システムが優先的にecs.c6インスタンスファミリを使用することを指定します。vCPUとメモリの仕様要件を満たすecs.c6インスタンスファミリのリソースが不足している場合は、ecs.c5インスタンスファミリが使用されます。ecs.c5インスタンスファミリのリソースも不足している場合は、Podは作成されません。

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

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

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

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

パラメータ

効果

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

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

システムは、ecs.c6.largeインスタンスタイプ、次にecs.g6.largeインスタンスタイプを使用します。

説明

このサンプル構成の効果は、k8s.aliyun.com/eci-use-specs: "ecs.c6.large,ecs.g6.large"の効果と同じです。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      name: test
      labels:
        app: test
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-instance-family: "ecs.c6,ecs.g6"    // ecs.c6とecs.g6インスタンスファミリを順番に使用するように指定します。
    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-family: "-ecs.hfg6,-ecs.hfg5"アノテーションを設定して、ecs.hfg6およびecs.hfg5インスタンスファミリを除外します。

システムは、Elastic Container Instanceでサポートされており、vCPUとメモリの仕様要件を満たすECSインスタンスファミリ(ecs.hfg6と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-family: "-ecs.hfg6,-ecs.hfg5"    // ecs.hfg6とecs.hfg5インスタンスファミリを除外します。
    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

例6:無効な設定

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

イベント名

タイプ

イベントメッセージ

イベントの説明

IgnoreInstanceTypeFeatures

警告

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

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

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

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-family: "ecs.c6"   // 特定のECSインスタンスファミリを指定します。この設定は有効になりません。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

次の図は、PodイベントのIgnoreInstanceTypeFeaturesイベントを示しています。

generation1