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

:VNodeへのポッドのスケジュール

最終更新日:May 02, 2022

データセンターまたは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にデプロイされたエラスティックコンテナインスタンスでポッドを実行できます。 次の操作を実行します。

  1. 次の内容を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 
  2. デプロイを作成します。

    kubectl apply -f deploy-vnode-test1.yaml

方法2: nodeNameパラメーターの指定

nodeNameパラメーターを指定して、ポッドをVNodeにスケジュールすることができます。 次の操作を実行します。

  1. 次のコマンドを実行してVNodesを照会します。

    kubectl getノード

    コマンド出力からVNode名を取得します。 デフォルトでは、VNodeの名前形式は <region>.<VNode ID> です。 次のコードは、サンプル出力を示しています。

    名ステータスROLES年齢バージョン
    cn-hangzhou.vnd-2ze2qhf8lmp5kgsx **** レディエージェント132m v1.20.6
    k8s-masterレディコントロール-プレーン、マスター169m v1.20.6 
  2. 次の内容を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名を指定します。
  3. デプロイを作成します。

    kubectl apply -f deploy-vnode-test2.yaml