全部產品
Search
文件中心

Elastic Container Instance:調度Pod到x86架構的虛擬節點

更新時間:May 24, 2025

對於ACK Serverless叢集,所有Pod均運行在虛擬節點(預設x86架構)上,無需進行調度;對於ACK叢集,即混合使用標準節點(ECS)和虛擬節點(ECI,基於VK)的模式下,預設會將Pod調度到ECS節點,您可以根據需要將Pod調度到虛擬節點。本文介紹如何將ACK叢集中的Pod調度到x86架構的虛擬節點上,以ECI來運行。

調度方式概述

您可以通過以下幾種方式將Pod調度到x86架構的虛擬節點:

說明
  • 下述方式均需要對存量資源做一定的修改,無法做到零侵入,建議您配置eci-profile實現將Label匹配的Pod自動調度到ECI。

  • 如果採用添加Lable或者指定nodeName的調度方式,則ECI Pod掛載雲端硬碟動態儲存裝置卷時,不支援使用WaitForFirstConsumer類型的Storageclass。更多資訊,請參見使用雲端硬碟動態儲存裝置卷

  • 配置Pod Label

    如果您有個別Pod需要調度到ECI上運行,可以直接為Pod添加特定的Label,則該Pod將運行在x86架構的虛擬節點上。

  • 配置Namespace Label

    如果您有一類Pod需要調度到ECI上運行,可以建立一個Namespace並添加特定的Label,則該Namespace下的所有Pod將運行在x86架構的虛擬節點上。

  • 配置nodeSelector和tolerations、指定nodeName等其它方式

    x86架構的虛擬節點預設配置了Label和Taint,因此可以為Pod配置對應的nodeSelector和tolerations將Pod調度到x86架構的虛擬節點上,或者也可以採用指定nodeName的方式進行調度。

方式一:配置Pod Label

您可以為Pod添加alibabacloud.com/eci=true的Label,將Pod調度到ECI上運行。

說明

仍支援添加eci=true的Label,但不推薦。

配置樣本如下:

  1. 建立Pod的YAML設定檔。

    vim test-pod.yaml

    test-pod.yaml的內容樣本如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx1
      labels: 
        alibabacloud.com/eci: "true"   # 添加特定Label
    spec:
      containers:
      - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        imagePullPolicy: Always
        name: nginx
  2. 建立Pod。

    kubectl create -f test-pod.yaml 

方式二:配置Namespace Label

您可以建立一個Namespace並添加alibabacloud.com/eci=true的Label,則該Namespace下的所有Pod將調度到ECI上運行。

說明

仍支援添加virtual-node-affinity-injection=enabled的Label,但不推薦。

配置樣本如下:

  1. 建立Namespace。

    kubectl create ns vk
  2. 為Namespace添加Label。

    kubectl label namespace vk alibabacloud.com/eci=true
  3. 建立Pod的YAML設定檔。

    vim test-pod.yaml

    test-pod.yaml的內容樣本如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: vk  # 指定添加了特定Label的Namespace
    spec:
      containers:
      - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        imagePullPolicy: Always
        name: nginx
  4. 建立Pod。

    kubectl create -f test-pod.yaml 

(不推薦)其它方式

您可以通過配置nodeSelector和tolerations、指定nodeName等方式將Pod調度到ECI上運行。

配置樣本如下:

  1. 建立Pod的YAML設定檔。

    vim test-pod.yaml

    test-pod.yaml的內容樣本如下:

    • 配置nodeSelector和tolerations

      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx
      spec:
        containers:
        - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
          imagePullPolicy: Always
          name: nginx
        nodeSelector:    # 配置nodeSelector
          type: virtual-kubelet
        tolerations:     # 配置tolerations
        - key: virtual-kubelet.io/provider
          operator: Exists
    • 指定nodeName

      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx
      spec:
        containers:
        - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
          imagePullPolicy: Always
          name: nginx
        nodeName: virtual-kubelet-cn-beijing-g # 指定nodeName
  2. 建立Pod。

    kubectl create -f test-pod.yaml