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
。
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
次のコマンドを実行して、Elastic Container Instanceベースのスケジューリングを使用するポッドを作成します。
kubectl apply -f nginx-deployment.yaml