優先順位ベースのリソーススケジューリングは、ポッドスケジューリングにおける弾力性の要件を満たすために Alibaba Cloud によって提供されています。ResourcePolicy は、ポッドスケジューリングのためにノードの優先順位を降順で指定します。システムがアプリケーションのポッドをデプロイまたはスケールアウトする場合、ポッドは ResourcePolicy にリストされているノードの優先順位に基づいてノードにスケジュールされます。システムがアプリケーションのポッドをスケールインする場合、ポッドはノードの優先順位に基づいて昇順でノードから削除されます。
kube-scheduler v1.x.x-aliyun-6.4 以降では、ResourcePolicy の ignorePreviousPod パラメーターはデフォルトで False に設定され、ignoreTerminatingPod パラメーターはデフォルトで True に設定されます。上記の パラメーターを使用する既存の ResourcePolicy は、この変更または今後の更新の影響を受けません。
前提条件
Kubernetes 1.20.11 以降を実行する Container Service for Kubernetes (ACK) Pro マネージドクラスターが作成されていること。ACK クラスタの Kubernetes バージョンを更新する方法の詳細については、「ACK クラスタの Kubernetes バージョンを更新する」をご参照ください。
必要なスケジューラバージョンは、クラスタの Kubernetes バージョンによって異なります。次の表は、さまざまな Kubernetes バージョンに必要なスケジューラバージョンを示しています。さまざまなスケジューラバージョンの機能の詳細については、「kube-scheduler」をご参照ください。
Kubernetes バージョン
スケジューラバージョン
1.20
1.20.4-ack-7.0 以降
1.22
1.22.15-ack-2.0 以降
1.24 以降
すべてのバージョンがサポートされています
ack-virtual-node がデプロイされていること (Elastic Container Instance を使用する 場合)。詳細については、「ACK クラスタで Elastic Container Instance を使用する」をご参照ください。
制限事項
優先順位ベースのリソーススケジューリングは、ポッド削除コスト機能と相互排他です。ポッド削除コスト機能の詳細については、「Pod deletion cost」をご参照ください。
優先順位ベースのリソーススケジューリングと Elastic Container Instance ベースのスケジューリングを同時に使用することはできません。Elastic Container Instance ベースのスケジューリングの詳細については、「Elastic Container Instance ベースのスケジューリングを使用する」をご参照ください。
この機能は BestEffort ポリシーを使用しており、システムがアプリケーションのポッドをスケールインする際に、ノードの優先順位に基づいて昇順でポッドがノードから削除されることは保証されません。
max パラメーターは、クラスタが Kubernetes 1.22 以降を実行し、クラスタにインストールされているスケジューラのバージョンが 5.0 以降の場合にのみ使用できます。
この機能をエラスティックノードプールと共に使用する場合、無効なノードがエラスティックノードプールに追加される可能性があります。エラスティックノードプールがユニットに含まれていることを確認してください。ユニットの max パラメーターは指定しないでください。
5.0 より前のスケジューラバージョンを使用する場合、またはクラスタの Kubernetes バージョンが 1.20 以前の場合、ResourcePolicy が作成される前に既に存在するポッドは、スケールインアクティビティ中に優先されます。
6.1 より前のスケジューラバージョンを使用する場合、またはクラスタの Kubernetes バージョンが 1.20 以前の場合、ResourcePolicy によって選択されたすべてのポッドが削除されるまで、ResourcePolicy を変更しないでください。
優先順位ベースのリソーススケジューリングを設定する方法
次のテンプレートを使用して ResourcePolicy を作成します。
apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
name: test
namespace: default
spec:
selector:
key1: value1
strategy: prefer
units:
- nodeSelector:
unit: first
podLabels:
key1: value1
podAnnotations:
key1: value1
resource: ecs
- nodeSelector:
unit: second
max: 10
resource: ecs
- resource: eci
# オプション、詳細設定
preemptPolicy: AfterAllUnits
ignorePreviousPod: false
ignoreTerminatingPod: true
matchLabelKeys:
- pod-template-hash
whenTryNextUnits:
policy: TimeoutOrExceedMax
timeout: 1m
selector
: 名前空間内のポッドを選択するために使用されるセレクター。ResourcePolicy は、選択されたポッドに適用されます。この例では、key1=value1
のラベル
を持つポッドが選択されます。selector
が空の場合、ResourcePolicy は名前空間内のすべてのポッドに有効になります。strategy
: スケジューリングポリシー。prefer
に設定します。units
: スケジュール可能なユニット。スケールアウトアクティビティでは、ポッドはunits
の下にリストされているノードの優先順位に基づいて降順でノードにスケジュールされます。スケールインアクティビティでは、ポッドはノードの優先順位に基づいて昇順でノードから削除されます。resource
: エラスティックリソースのタイプ。有効な値:eci
、ecs
、elastic
、acs
。elastic
は、クラスタが 1.24 以降の Kubernetes バージョンを実行し、スケジューラバージョンが 6.4.3 以降の場合に使用できます。acs
は、クラスタが 1.26 以降の Kubernetes バージョンを実行し、スケジューラバージョンが 6.7.1 以降の場合に使用できます。説明elastic
タイプは非推奨になっています。PodLabels でk8s.aliyun.com/resource-policy-wait-for-ecs-scaling: "true"
を設定して、ノードプールの自動スケーリングを有効にすることをお勧めします。説明デフォルトでは、
acs
タイプは自動的にalibabacloud.com/compute-class: default
とalibabacloud.com/compute-class: general-purpose
のラベルをポッドに追加します。PodLabels で異なる値を指定することで、デフォルト値をオーバーライドできます。PodAnnotation にalpha.alibabacloud.com/compute-qos-strategy
が含まれている場合、alibabacloud.com/compute-class: default
ラベルはデフォルトでは追加されません。重要6.8.3 より前のスケジューラバージョンでは、複数の
acs
ユニットを同時に使用することはサポートされていません。nodeSelector
: 指定されたnode
ラベル
を持つノードを選択するために使用されるセレクター。このパラメーターは、resource パラメーターがecs
に設定されている場合にのみ有効になります。max
(スケジューラ v5.0 以降で使用可能): 現在のユニットにスケジュールできるレプリケートされたポッドの最大数を指定します。podAnnotations
: データ型はmap[string]string{}
です。podAnnotations
で設定されたキーと値のペアは、スケジューラによってポッドに適用されます。これらのキーと値のペアを持つポッドのみがこのユニットのポッド数に含まれます。podLabels
: データ型はmap[string]string{}
です。podLabels
で設定されたキーと値のペアは、スケジューラによってポッドに適用されます。これらのキーと値のペアを持つポッドのみがこのユニットのポッド数に含まれます。説明ユニットの
PodLabels
にk8s.aliyun.com/resource-policy-wait-for-ecs-scaling: "true"
が含まれており、ユニットの現在のポッド数が指定された最大値を下回っている場合、スケジューラはポッドを現在のユニットで待機させます。待機時間はwhenTryNextUnits
で設定できます。さらに、k8s.aliyun.com/resource-policy-wait-for-ecs-scaling: "true"
はポッドには適用されません。ポッドがこのラベルを持っている必要はありません。
preemptPolicy
(スケジューラバージョンが 6.1 以降の場合に使用可能): ResourcePolicy に複数のunits
が含まれている場合に使用されるプリエンプションポリシー。このポリシーは、スケジューラがユニットにポッドをスケジュールできなかった場合にノードをプリエンプションするかどうかを指定します。プリエンプションポリシーを BeforeNextUnit に設定すると、スケジューラはユニットにポッドをスケジュールできなかった場合にノードのプリエンプションを試みます。プリエンプションポリシーを AfterAllUnits に設定すると、スケジューラはすべてのユニットにポッドをスケジュールできなかった場合にのみノードのプリエンプションを試みます。デフォルトは AfterAllUnits です。プリエンプションを有効にするには、ACK Scheduler パラメーターを設定します。
ignorePreviousPod
(スケジューラバージョンが 6.1 以降の場合に使用可能): このパラメーターは、units
セクションのmax
パラメーターと共に使用する必要があります。このパラメーターがtrue
に設定されている場合、max パラメーターの値には、ResourcePolicy が作成される前にスケジュールされたポッドは含まれません。ignoreTerminatingPod
(スケジューラバージョンが 6.1 以降の場合に使用可能): このパラメーターは、units
セクションのmax
パラメーターと共に使用する必要があります。このパラメーターがtrue
に設定されている場合、max パラメーターの値には、Terminating 状態のポッドは含まれません。matchLabelKeys
(スケジューラバージョンが 6.2 以降の場合に使用可能): このパラメーターは、units
セクションのmax
パラメーターと共に使用する必要があります。このパラメーターは、max
パラメーターで指定されたポッドのラベルキーと一致します。matchLabelKeys
パラメーターを設定した後、指定されたラベルキーを持たないポッドはスケジュールされません。whenTryNextUnits
(クラスタの Kubernetes バージョンが 1.24 以降で、スケジューラバージョンが 6.4 以降の場合に使用可能): このパラメーターは、ポッドが任意の条件下で後続のユニットのリソースを使用できることを指定します。policy
: ポッドスケジューリングポリシー。有効な値:ExceedMax
、LackResourceAndNoTerminating
、TimeoutOrExceedMax
、LackResourceOrExceedMax
(デフォルト値)。ExceedMax
: 現在のユニットに Max 制限が設定されていない場合、または現在のユニットのポッド数が Max 制限を超えている場合、ポッドは次のレベルのリソースを使用できます。このポリシーは、Auto Scaling および Elastic Container Instance と共に使用して、Auto Scaling を使用してノードプールをスケーリングすることを優先できます。重要このポリシーを実装した後、オートスケーラーがノードプールにノードを追加できない状態が長時間続くと、ポッドは pending 状態のままになる可能性があります。
オートスケーラーは ResourcePolicy の Max 制限を認識しません。実際に追加されるインスタンスの数は、Max 制限を超える可能性があります。この問題は、今後のバージョンで解決される予定です。
TimeoutOrExceedMax
: 次のいずれかの条件が満たされた場合:現在のユニットに Max 制限が設定されており、ユニットのポッド数が Max 制限よりも少ない。
現在のユニットに Max 制限が設定されておらず、ユニットの
PodLabels
にk8s.aliyun.com/resource-policy-wait-for-ecs-scaling: "true"
が含まれている。
現在のユニットにポッドスケジューリングのための十分なリソースがない場合、現在のユニットのポッドはリソースを待機します。最大待機時間は
timeout
の値と同じです。このポリシーは、Auto Scaling および Elastic Container Instance と共に使用して、Auto Scaling を使用してノードプールをスケーリングすることを優先し、タイムアウト期間が終了したときに Elastic Container Instance を使用できます。- 重要
タイムアウト期間が終了する前に新しく追加されたノードが Ready 状態に達せず、ポッドが NotReady taint を許容するように設定されていない場合、ポッドは引き続き Elastic Container Instance にスケジュールされます。
LackResourceOrExceedMax
: 現在のユニットのポッド数が Max 制限以上であるか、ユニットにアイドルリソースがない場合、ポッドは次のレベルのリソースを使用できます。これはデフォルトのポリシーであり、ほとんどのシナリオに適しています。LackResourceAndNoTerminating
: 現在のユニットのポッド数が Max 制限以上であるか、ユニットにアイドルリソースがなく、ユニットに Terminating ポッドが存在しない場合、ポッドは次のレベルのリソースを使用できます。このポリシーは、ローリングアップデートポリシーと共に使用して、現在のユニットに Terminating ポッドが存在する場合に新しいポッドが後続のユニットにスケジュールされるのを防ぐことができます。
timeout
:timeoutOrExceedMaxPolicy
ポリシーが使用される場合、このパラメーターはタイムアウト期間を指定します。このパラメーターが空の文字列に設定されている場合、タイムアウト期間は 15 分です。
例
例 1: ポッドを指定されたノードプールにスケジュールする
Deployment のポッドを特定のノードプール (例: ノードプール A とノードプール B) にスケジュールするとします。ノードプール A の使用を優先し、ノードプール A の計算リソースが不足している場合にのみポッドをノードプール B にスケジュールするとします。スケールインアクティビティでは、最初にノードプール B のノードからポッドを削除するとします。この例では、ノードプール A には cn-beijing.10.0.3.137
と cn-beijing.10.0.3.138
のノードが含まれています。ノードプール B には cn-beijing.10.0.6.47
と cn-beijing.10.0.6.46
のノードが含まれています。これらの各ノードには、2 vCPU と 4 GB のメモリがあります。優先順位ベースのリソーススケジューリングを設定するには、次の手順を実行します。
次のテンプレートを使用して ResourcePolicy を作成します。
apiVersion: scheduling.alibabacloud.com/v1alpha1 kind: ResourcePolicy metadata: name: nginx namespace: default spec: selector: app: nginx # ResourcePolicy を適用するポッドのラベルを指定する必要があります。 strategy: prefer units: - resource: ecs nodeSelector: alibabacloud.com/nodepool-id: np7ec79f2235954e879de07b780058**** - resource: ecs nodeSelector: alibabacloud.com/nodepool-id: npab2df797738644e3a7b7cbf532bb****
説明ノードプールの ID を表示するには、ACK コンソールのクラスタの詳細ページで [ノード] > [ノードプール] を選択します。詳細については、「ノードプールを作成する」をご参照ください。
次のテンプレートを使用して、2 つのポッドをプロビジョニングする Deployment を作成します。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: nginx labels: app: nginx # ポッドラベルは、ResourcePolicy の selector に指定したものと同じである必要があります。 spec: containers: - name: nginx image: nginx resources: limits: cpu: 2 requests: cpu: 2
NGINX アプリケーションをデプロイし、ポッドをクエリします。
次のコマンドを実行して、NGINX アプリケーションをデプロイします。
kubectl apply -f nginx.yaml
予期される出力:
deployment.apps/nginx created
次のコマンドを実行して、ポッドをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-b**** 1/1 Running 0 17s 172.29.112.216 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-k**** 1/1 Running 0 17s 172.29.113.24 cn-beijing.10.0.3.138 <none> <none>
出力は、2 つのポッドがノードプール A にスケジュールされていることを示しています。
NGINX アプリケーションのポッドをスケールアウトします。
次のコマンドを実行して、ポッドの数を 4 に増やします。
kubectl scale deployment nginx --replicas 4
予期される出力:
deployment.apps/nginx scaled
次のコマンドを実行して、ポッドのステータスをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-b**** 1/1 Running 0 101s 172.29.112.216 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-k**** 1/1 Running 0 101s 172.29.113.24 cn-beijing.10.0.3.138 <none> <none> nginx-9cdf7bbf9-m**** 1/1 Running 0 18s 172.29.113.156 cn-beijing.10.0.6.47 <none> <none> nginx-9cdf7bbf9-x**** 1/1 Running 0 18s 172.29.113.89 cn-beijing.10.0.6.46 <none> <none>
出力は、ノードプール A の計算リソースが不足しているため、新しいポッドがノードプール B にスケジュールされていることを示しています。
NGINX アプリケーションのポッドをスケールインします。
次のコマンドを実行して、ポッドの数を 2 に減らします。
kubectl scale deployment nginx --replicas 2
予期される出力:
deployment.apps/nginx scaled
次のコマンドを実行して、ポッドのステータスをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-b**** 1/1 Running 0 2m41s 172.29.112.216 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-k**** 1/1 Running 0 2m41s 172.29.113.24 cn-beijing.10.0.3.138 <none> <none> nginx-9cdf7bbf9-m**** 0/1 Terminating 0 78s 172.29.113.156 cn-beijing.10.0.6.47 <none> <none> nginx-9cdf7bbf9-x**** 0/1 Terminating 0 78s 172.29.113.89 cn-beijing.10.0.6.46 <none> <none>
出力は、ノードプール B のノードで実行されているポッドが削除されていることを示しています。
例 2: ポッドを ECS インスタンスと Elastic Container Instance にスケジュールする
Deployment のポッドを、サブスクリプション Elastic Compute Service (ECS) インスタンス、従量課金 ECS インスタンス、Elastic Container Instance など、複数のタイプのリソースにスケジュールするとします。リソースコストを削減するために、サブスクリプション ECS インスタンス > 従量課金 ECS インスタンス > Elastic Container Instance の優先順位に基づいてポッドをリソースにスケジュールするとします。スケールインアクティビティでは、Elastic Container Instance、従量課金 ECS インスタンス、サブスクリプション ECS インスタンスの順序でこれらのリソースからポッドを削除するとします。この例では、各 ECS インスタンスには 2 vCPU と 4 GB のメモリがあります。優先順位ベースのリソーススケジューリングを設定するには、次の手順を実行します。
次のコマンドを実行して、ノードに異なる課金方法を示す
labels
を追加します。ノードプールを使用して、ノードにlabels
を自動的に追加することもできます。kubectl label node cn-beijing.10.0.3.137 paidtype=subscription kubectl label node cn-beijing.10.0.3.138 paidtype=subscription kubectl label node cn-beijing.10.0.6.46 paidtype=pay-as-you-go kubectl label node cn-beijing.10.0.6.47 paidtype=pay-as-you-go
次のテンプレートを使用して ResourcePolicy を作成します。
apiVersion: scheduling.alibabacloud.com/v1alpha1 kind: ResourcePolicy metadata: name: nginx namespace: default spec: selector: app: nginx # ResourcePolicy を適用するポッドのラベルを指定する必要があります。 strategy: prefer units: - resource: ecs nodeSelector: paidtype: subscription - resource: ecs nodeSelector: paidtype: pay-as-you-go - resource: eci
次のテンプレートを使用して、2 つのポッドをプロビジョニングするデプロイメントを作成します。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: nginx labels: app: nginx # ポッドラベルは、ResourcePolicy のセレクターに指定したものと同じである必要があります。 spec: containers: - name: nginx image: nginx resources: limits: cpu: 2 requests: cpu: 2
NGINX アプリケーションをデプロイし、ポッドをクエリします。
次のコマンドを実行して、NGINX アプリケーションをデプロイします。
kubectl apply -f nginx.yaml
予期される出力:
deployment.apps/nginx created
次のコマンドを実行して、ポッドをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-b**** 1/1 Running 0 66s 172.29.112.215 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-r**** 1/1 Running 0 66s 172.29.113.23 cn-beijing.10.0.3.138 <none> <none>
出力は、
paidtype=subscription
ラベル
を持つノードに 2 つのポッドがスケジュールされていることを示しています。
NGINX アプリケーションのポッドをスケールアウトします。
次のコマンドを実行して、ポッドの数を 4 つに増やします。
kubectl scale deployment nginx --replicas 4
予期される出力:
deployment.apps/nginx scaled
次のコマンドを実行して、ポッドのステータスをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-4**** 1/1 Running 0 16s 172.29.113.155 cn-beijing.10.0.6.47 <none> <none> nginx-9cdf7bbf9-b**** 1/1 Running 0 3m48s 172.29.112.215 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-f**** 1/1 Running 0 16s 172.29.113.88 cn-beijing.10.0.6.46 <none> <none> nginx-9cdf7bbf9-r**** 1/1 Running 0 3m48s 172.29.113.23 cn-beijing.10.0.3.138 <none> <none>
paidtype=subscription
ラベル
を持つノードが不足しているため、paidtype=pay-as-you-go
ラベル
を持つノードに新しいポッドがスケジュールされていることが出力に示されています。次のコマンドを実行して、ポッドの数を 6 つに増やします。
kubectl scale deployment nginx --replicas 6
予期される出力:
deployment.apps/nginx scaled
次のコマンドを実行して、ポッドのステータスをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-4**** 1/1 Running 0 3m10s 172.29.113.155 cn-beijing.10.0.6.47 <none> <none> nginx-9cdf7bbf9-b**** 1/1 Running 0 6m42s 172.29.112.215 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-f**** 1/1 Running 0 3m10s 172.29.113.88 cn-beijing.10.0.6.46 <none> <none> nginx-9cdf7bbf9-r**** 1/1 Running 0 6m42s 172.29.113.23 cn-beijing.10.0.3.138 <none> <none> nginx-9cdf7bbf9-s**** 1/1 Running 0 36s 10.0.6.68 virtual-kubelet-cn-beijing-j <none> <none> nginx-9cdf7bbf9-v**** 1/1 Running 0 36s 10.0.6.67 virtual-kubelet-cn-beijing-j <none> <none>
ECS ノードが不足しているため、新しいポッドがエラスティックコンテナインスタンスにスケジュールされていることが出力に示されています。
NGINX アプリケーションのポッドをスケールインします。
次のコマンドを実行して、ポッドの数を 4 つに減らします。
kubectl scale deployment nginx --replicas 4
予期される出力:
deployment.apps/nginx scaled
次のコマンドを実行して、ポッドのステータスをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-4**** 1/1 Running 0 4m59s 172.29.113.155 cn-beijing.10.0.6.47 <none> <none> nginx-9cdf7bbf9-b**** 1/1 Running 0 8m31s 172.29.112.215 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-f**** 1/1 Running 0 4m59s 172.29.113.88 cn-beijing.10.0.6.46 <none> <none> nginx-9cdf7bbf9-r**** 1/1 Running 0 8m31s 172.29.113.23 cn-beijing.10.0.3.138 <none> <none> nginx-9cdf7bbf9-s**** 1/1 Terminating 0 2m25s 10.0.6.68 virtual-kubelet-cn-beijing-j <none> <none> nginx-9cdf7bbf9-v**** 1/1 Terminating 0 2m25s 10.0.6.67 virtual-kubelet-cn-beijing-j <none> <none>
出力は、エラスティックコンテナインスタンスで実行されているポッドが削除されたことを示しています。
次のコマンドを実行して、ポッドの数を 2 つに減らします。
kubectl scale deployment nginx --replicas 2
予期される出力:
deployment.apps/nginx scaled
次のコマンドを実行して、ポッドのステータスをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-4**** 0/1 Terminating 0 6m43s 172.29.113.155 cn-beijing.10.0.6.47 <none> <none> nginx-9cdf7bbf9-b**** 1/1 Running 0 10m 172.29.112.215 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-f**** 0/1 Terminating 0 6m43s 172.29.113.88 cn-beijing.10.0.6.46 <none> <none> nginx-9cdf7bbf9-r**** 1/1 Running 0 10m 172.29.113.23 cn-beijing.10.0.3.138 <none> <none>
出力は、
paidtype=pay-as-you-go
ラベル
を持つノード上のポッドが削除されたことを示しています。次のコマンドを実行して、ポッドのステータスをクエリします。
kubectl get pods -o wide
予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-9cdf7bbf9-b**** 1/1 Running 0 11m 172.29.112.215 cn-beijing.10.0.3.137 <none> <none> nginx-9cdf7bbf9-r**** 1/1 Running 0 11m 172.29.113.23 cn-beijing.10.0.3.138 <none> <none>
出力は、
paidtype=subscription
ラベル
を持つノード上でのみポッドが実行されていることを示しています。
関連トピック
ACK クラスターにサービスをデプロイする際に、許容とノードアフィニティを設定して、スケジューラが Elastic Compute Service (ECS) インスタンスまたは Elastic Container Instance のみを使用するようにするか、ECS インスタンスが不足している場合にスケジューラが Elastic Container Instance を自動的に適用するようにすることができます。さまざまなスケジューリングポリシーを設定して、さまざまなシナリオでリソースをスケーリングできます。詳細については、「Elastic Container Instance ベースのスケジューリングを設定する」をご参照ください。
高可用性と高パフォーマンスは、分散ジョブにとって不可欠です。ACK Pro マネージドクラスターでは、Kubernetes ネイティブのスケジューリングセマンティクスを使用して、高可用性を実現するためにゾーン全体に分散ジョブを分散させることができます。また、Kubernetes ネイティブのスケジューリングセマンティクスを使用して、高パフォーマンスを実現するためにアフィニティ設定に基づいて特定のゾーンに分散ジョブをデプロイすることもできます。詳細については、「Elastic Container Instance ベースのポッドをゾーン全体に分散し、アフィニティを設定する」をご参照ください。