データセンターまたはAlibaba Cloud Elastic Compute Service (ECS) インスタンスに自己管理型Kubernetesクラスターがある場合、実ノードと仮想ノード (VNodes) の両方を使用します。 この場合、nodeSelectorパラメーターとtolerationsパラメーターを設定するか、nodeNameパラメーターを指定してポッドをVNodeにスケジュールすることができます。 その後、VNodeにデプロイされているエラスティックコンテナインスタンスでポッドを実行できます。 このトピックでは、ポッドをVNodeにスケジュールする方法について説明します。
スケジューリング方法の概要
VNodesはネイティブKubernetesノードと同等です。 Kubernetesクラスターが実ノードとVNodesの両方を使用する場合、次のいずれかの方法を使用して、ポッドをVNodeにスケジュールできます。
次の方法を使用するには、既存のリソースを変更する必要があります。 これらの変更は、システムに脆弱性を引き起こす可能性があります。 ECIプロファイルを設定することを推奨します。 ECIプロファイルは、ECIスケジューラ機能を提供します。 この機能を使用すると、eci-profileで一致するポッドラベルまたは名前空間ラベルを宣言できます。 ポッドに宣言されたラベルがある場合、ポッドは自動的にエラスティックコンテナインスタンスにスケジュールされます。 詳細については、「ポッドをオーケストレーションするためのECIプロファイルの設定」をご参照ください。
nodeSelectorと許容値のパラメーターを設定する
デフォルトでは、VNodesはラベルとテイントで構成されています。 したがって、nodeSelectorと許容範囲を設定して、ポッドをVNodesにスケジュールし、VNodesにデプロイされたエラスティックコンテナインスタンスでポッドを実行できます。
nodeNameパラメーターの指定
nodeNameパラメーターを指定して、ポッドをVNodeにスケジュールし、VNodeにデプロイされたエラスティックコンテナインスタンスでポッドを実行できます。
方法1: nodeSelectorと許容範囲のパラメーターを設定する
デフォルトでは、次のコードに示すように、VNodesはラベルとテイントで構成されます。
...
labels:
k8s.aliyun.com/vnode: "true"
...
taints:
- effect: NoSchedule
キー: k8s.aliyun.com/vnode
value: "true"
したがって、nodeSelectorパラメーターと許容範囲パラメーターを設定して、ポッドをVNodesにスケジュールし、VNodesにデプロイされたエラスティックコンテナインスタンスでポッドを実行できます。 次の操作を実行します。
次の内容をdeploy-vnode-test 1.yamlファイルとして保存します。
apiVersion: apps/v1 kind: 配置 メタデータ: 名前: vnode-nginx-test1 spec: replicas: 2 selector: matchLabels: アプリ: uid template: metadata: labels: アプリ: uid spec: nodeSelector: # nodeSelectorを設定します。 k8s.aliyun.com/vnode: "true" tolerations: # tolerationsを設定します。 -キー: k8s.aliyun.com/vnode 演算子: "等しい" value: "true" エフェクト: 「NoSchedule」 containers: - name: nginx 画像: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
デプロイを作成します。
kubectl apply -f deploy-vnode-test1.yaml
方法2: nodeNameパラメーターの指定
nodeNameパラメーターを指定して、ポッドをVNodeにスケジュールすることができます。 次の操作を実行します。
次のコマンドを実行してVNodesを照会します。
kubectl getノード
コマンド出力からVNode名を取得します。 デフォルトでは、VNodeの名前形式は
<region>.<VNode ID>
です。 次のコードは、サンプル出力を示しています。名ステータスROLES年齢バージョン cn-hangzhou.vnd-2ze2qhf8lmp5kgsx **** レディエージェント132m v1.20.6 k8s-masterレディコントロール-プレーン、マスター169m v1.20.6
次の内容をdeploy-vnode-test2.yamlファイルとして保存します。
apiVersion: apps/v1 kind: 配置 メタデータ: 名前: vnode-nginx-test2 spec: replicas: 2 selector: matchLabels: アプリ: uid template: metadata: labels: アプリ: uid spec: containers: - name: nginx 画像: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 nodeName: cn-hangzhou.vnd-2ze2qhf8lmp5kgsx ****# VNode名を指定します。
デプロイを作成します。
kubectl apply -f deploy-vnode-test2.yaml