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

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

最終更新日:Dec 28, 2024

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

機能の説明

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

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

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

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

アーキテクチャ

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

ECSインスタンスファミリ

Arm

8

g8y、c8y、およびr8y

x86

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は、実際に使用されたECSインスタンスタイプに基づいて課金されます。指定されたvCPU数とメモリサイズに基づいて課金されるわけではありません。

    重要

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

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

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

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

構成の説明

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

  • 複数の世代を設定できます。有効な値は、Podの作成に使用できるECSインスタンスファミリの世代です。

    重要

    第8世代ECSインスタンスファミリは、Armアーキテクチャのみをサポートしています。第8世代ECSインスタンスファミリを使用してPodを作成するには、nodeSelectorフィールドを指定して、PodをArmベースの仮想ノードにスケジュールする必要があります。第8世代ECSインスタンスファミリをx86アーキテクチャを使用するものと一緒に使用することはできません。ArmベースのPodを作成する場合、特定世代のECSインスタンスファミリを指定または除外する必要はありません。たとえば、第8世代ECSインスタンスファミリを除外する必要はありません。詳細については、PodをArmベースの仮想ノードにスケジュールするおよびArmアーキテクチャのECSインスタンスタイプを参照してください。

  • 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インスタンスファミリのリソースも不足している場合は、Podは作成されません。

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

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

  • Podのメタデータに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世代ECSインスタンスファミリと第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インスタンスファミリのリソースが不足している場合、システムはエラスティックコンテナインスタンスでサポートされている第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数とメモリサイズを指定してPodを作成する場合にのみ有効になります。ECSインスタンスタイプを指定してPodを作成する場合、この機能は有効になりません。指定された世代のECSインスタンスファミリが有効にならない場合は、IgnoreInstanceTypeFeaturesイベントが生成されます。

イベント名

タイプ

イベントメッセージ

イベントの説明

IgnoreInstanceTypeFeatures

警告

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

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

次の例では、第6世代ECSインスタンスファミリを指定するアノテーションは自動的に無視され、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-generation: "6"    # 特定世代のECSインスタンスファミリを指定します。この設定は有効になりません。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

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

generation1