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

Container Service for Kubernetes:elasticリソースを使用したElastic Container Instanceベースのスケジューリングの実装 (中止)

最終更新日:Dec 06, 2024

Elastic Container Instanceベースのスケジューリングは、Alibaba Cloudがエラスティックリソーススケジューリングに提供するスケジューリングポリシーです。 注釈を追加して、アプリケーションを展開するときに使用するリソースを指定できます。 Elastic Compute Service (ECS) インスタンスまたはelastic containerインスタンスのみを使用するように指定するか、ECSリソースが不足している場合にシステムがelastic containerインスタンスを要求できるようにすることができます。 Elastic Container Instanceベースのスケジューリングは、さまざまなワークロードシナリオでリソース要件を満たすことができます。 このトピックでは、Elastic Container Instanceベースのスケジューリングの使用方法について説明します。

重要
  • Elastic Container Instanceベースのスケジューリング機能は引き続きサポートされており、後のバージョンのKubernetesでは廃止される予定です。 Kubernetesネイティブセマンティクスを使用して、後のバージョンのKubernetesでElastic Container Instanceベースの自動スケーリングを設定できます。 詳細については、「Elastic Container Instanceベースの自動スケーリングの設定」をご参照ください。

  • Elastic Container Instanceベースのスケジューリング機能は、優先度ベースのリソーススケジューリング機能に更新されます。 優先度ベースのリソーススケジューリングは、Elastic Container Instanceベースのスケジューリングのすべての使用シナリオをサポートし、高い柔軟性を提供します。

  • 優先度ベースのリソーススケジューリングを使用することを推奨します。 Elastic Container Instanceベースの自動スケーリングと比較して、優先度ベースのリソーススケジューリングは、アプリケーションポッドに侵入することなく、逆の順序でノードからポッドを削除できます。 詳細については、「優先度ベースのリソーススケジューリングの設定」をご参照ください。

前提条件

  • Kubernetes 1.18以降を実行するContainer Service for Kubernetes (ACK) Proクラスターが作成されます。 詳細については、「ACK Proクラスターの作成」をご参照ください。

  • クラスターのKubernetesバージョンに基づいて、特定のバージョンのスケジューラが必要です。 次の表に、各Kubernetesバージョンに必要なスケジューラーバージョンを示します。 さまざまなバージョンのスケジューラの機能の詳細については、「kube-scheduler」をご参照ください。

    Kubernetesバージョン

    スケジューラのバージョン

    1.18

    v1.18-ack-3.0以降

    1.20

    v1.20.4-ack-4.0以降

    1.22

    v1.22.3-ack-1.0以降

    1.24

    v1.24.3-ack-2.0以降

  • ack-virtual-nodeコンポーネントがクラスターにインストールされます。 詳細については、「ACKクラスターでのElastic Container Instanceの使用」をご参照ください。

  • alibabacloud.com/burst-resource: eciアノテーションとalibabacloud.com/fluid-sidecar-target: eciアノテーションを同時に使用することはできません。 alibabacloud.com/fluid-sidecar-target: eciアノテーションの使用方法の詳細については、「サーバーレスクラウドコンピューティングでのデータアクセスの概要」をご参照ください。

手順

説明

配置のtemplate.metadataフィールドに注釈を追加して、使用するリソースの種類を指定します。 alibabacloud.com/burst-resourceの有効な値:

  • 値が空の場合、クラスター内の既存のECSリソースのみが使用されます。 デフォルト設定です。

  • eci: クラスター内のECSリソースが不足している場合、Elasticコンテナインスタンスが使用されます。

  • ec_only: エラスティックコンテナインスタンスのみが使用されます。 クラスター内のECSリソースは使用されません。

値がeciまたはeci_onlyでない場合、または値がeci_onlyであるが、クラスターに仮想ノードが存在しない場合、ポッドはスケジュールされません。 Kubernetes 1.22.15および1.24.6では、ポッドのスケジュールに失敗した原因に基づいて、次のいずれかのエラーメッセージが返されます。

  • 値はeciまたはec_onlyではありません: requesttypemustbeeci, ec_onlyorecs

  • 値はeci_onlyですが、仮想ノードは存在しません: doesn'tfitecitype:eci_only

  1. nginx-deployment.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx
          annotations:
            alibabacloud.com/burst-resource: eci # Specify the types of resources that you want to use for elastic scheduling. 
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            resources:
              limits:
                cpu: 2
              requests:
                cpu: 2
  2. 次のコマンドを実行して、Elastic Container Instanceベースのスケジューリングを使用するポッドを作成します。

    kubectl apply -f nginx-deployment.yaml