全部产品
Search
文档中心

Elastic Container Instance:Jadwalkan pod ke VNode

更新时间:Jun 29, 2025

Jika Anda memiliki kluster Kubernetes yang dikelola sendiri di pusat data atau pada instance Alibaba Cloud Elastic Compute Service (ECS), Anda dapat menggunakan baik node nyata maupun node virtual (VNode). Untuk menjadwalkan pod ke VNode, Anda dapat mengonfigurasi bidang nodeSelector dan tolerations, atau menentukan bidang nodeName. Setelah itu, pod dapat dijalankan sebagai instance kontainer elastis. Topik ini menjelaskan cara menjadwalkan pod ke VNode.

Ikhtisar metode penjadwalan

VNode setara dengan node Kubernetes asli. Jika kluster Kubernetes menggunakan baik node nyata maupun VNode, Anda dapat memilih salah satu metode berikut untuk menjadwalkan pod ke VNode:

Catatan

Untuk menggunakan metode berikut, Anda perlu memodifikasi sumber daya yang ada. Modifikasi ini dapat menyebabkan kerentanan dalam sistem Anda. Kami merekomendasikan agar Anda menerapkan komponen eci-profile. Komponen ini memungkinkan Anda mengonfigurasi bidang selector untuk secara otomatis menjadwalkan pod yang memenuhi kondisi tertentu ke VNode. Untuk informasi lebih lanjut, lihat Gunakan eci-profile untuk menjadwalkan pod ke VNode.

  • Konfigurasikan bidang nodeSelector dan tolerations

    Secara default, VNode dikonfigurasi dengan label dan taint. Oleh karena itu, Anda dapat mengonfigurasi nodeSelector dan tolerations untuk menjadwalkan pod ke VNode, lalu menjalankannya sebagai instance kontainer elastis.

  • Tentukan bidang nodeName

    Anda dapat menentukan bidang nodeName untuk menjadwalkan pod ke VNode tertentu dan menjalankannya sebagai instance kontainer elastis.

Metode 1: Konfigurasikan bidang nodeSelector dan tolerations

Secara default, VNode dikonfigurasi dengan label dan taint seperti yang ditunjukkan dalam kode berikut.

...
  labels:
    k8s.aliyun.com/vnode: "true"
...
  taints:
  - effect: NoSchedule
    key: k8s.aliyun.com/vnode
    value: "true"

Oleh karena itu, Anda dapat mengonfigurasi bidang nodeSelector dan tolerations untuk menjadwalkan pod ke VNode dan menjalankannya sebagai instance kontainer elastis. Lakukan langkah-langkah berikut:

  1. Simpan konten berikut sebagai file deploy-vnode-test1.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: vnode-nginx-test1
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: uid
      template:
        metadata:
          labels:
            app: uid
        spec:
          nodeSelector:     # Konfigurasikan nodeSelector.
            k8s.aliyun.com/vnode: "true"
          tolerations:      # Konfigurasikan tolerations.
          - key: k8s.aliyun.com/vnode
            operator: "Equal"
            value: "true"
            effect: "NoSchedule"
          containers:
          - name: nginx
            image: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
  2. Buat Deployment.

    kubectl apply -f deploy-vnode-test1.yaml

Metode 2: Tentukan bidang nodeName

Anda dapat menentukan bidang nodeName untuk menjadwalkan pod ke VNode. Lakukan langkah-langkah berikut:

  1. Jalankan perintah berikut untuk menanyakan VNode.

    kubectl get nodes

    Dapatkan nama VNode dari keluaran perintah. Secara default, format nama VNode adalah <region>.<VNode ID>. Contoh keluaran:

    NAME                                    STATUS   ROLES                  AGE    VERSION
    cn-hangzhou.vnd-2ze2qhf8lmp5kgsx****    Ready    agent                  132m   v1.20.6
    k8s-master                              Ready    control-plane,master   169m   v1.20.6
  2. Simpan konten berikut sebagai file deploy-vnode-test2.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: vnode-nginx-test2
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: uid
      template:
        metadata:
          labels:
            app: uid
        spec:
          containers:
          - name: nginx
            image: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
          nodeName: cn-hangzhou.vnd-2ze2qhf8lmp5kgsx****   # Tentukan nama VNode.
  3. Buat Deployment.

    kubectl apply -f deploy-vnode-test2.yaml