All Products
Search
Document Center

Elastic Container Instance:Integrasikan VNode dengan kluster Kubernetes yang dikelola sendiri di ECS

Last Updated:Jun 03, 2026

Deploy virtual node (VNode) di kluster Kubernetes yang dikelola sendiri Anda di ECS untuk menjadwalkan Pod melalui Elastic Container Instance (ECI) dalam VPC yang sama.

Latar Belakang

Elastic Container Instance (ECI) mengelola penjadwalan Pod dan sumber daya pada lapisan infrastruktur, sedangkan Kubernetes menangani manajemen beban kerja di atasnya. Tambahkan VNode ke kluster yang dikelola sendiri Anda di ECS untuk memanfaatkan ECI. Prosedur integrasi lengkap tersedia di Hubungkan kluster Kubernetes yang dikelola sendiri ke ECI.

Prasyarat

  • Kluster Kubernetes yang dikelola sendiri (v1.13–v1.30) di ECS, dibuat dengan kubeadm.

  • Plugin jaringan Flannel, Calico, atau Cilium telah di-deploy di kluster.

Instal vnodectl

ECI menyediakan vnodectl untuk menghubungkan dan mengelola VNode. Kami merekomendasikan menginstalnya pada node bidang kontrol kluster Anda.

  1. Hubungkan ke kluster Kubernetes Anda.

  2. Unduh paket vnodectl.

    wget https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnodectl_0.0.5-beta_linux_amd64.tar.gz -O vnodectl.tar.gz
  3. Ekstrak paket tersebut.

    tar xvf vnodectl.tar.gz
  4. Pindahkan binari ke direktori dalam PATH Anda.

    cp vnodectl /usr/local/bin/vnode

Konfigurasi file ~/.vnode/config

  1. Modifikasi file ~/.vnode/config.

    vim ~/.vnode/config

    Tambahkan konfigurasi Anda. Contoh:

    Penting
    • kubeconfig memerlukan izin cluster-admin. Alternatif dengan izin terbatas dijelaskan dalam Konfigurasi kluster.

    • VNode harus dapat mengakses alamat server API yang tercantum dalam kubeconfig.

    kind: vnode
    contexts:
        - name: default                                          # Nama konteks.
          region-id: cn-hangzhou                                 # ID wilayah.
          access-key-id: <yourAccessKeyID>                       # ID AccessKey.
          access-key-secret: <yourAccessKeySecret>               # Rahasia AccessKey.
          vswitch-id: vsw-7xv2yk45qp5etidgf****                  # ID vSwitch tempat VNode berada.
          security-group-id: sg-7xv5tcch4kjdr65t****             # ID grup keamanan tempat VNode berada.
          kubeconfig: /path/to/kubeconfig                        # Path ke file kubeconfig kluster.
    current-context: default
  2. Tetapkan konteks aktif.

    vnode config set-context <context-name>

Buat VNode

  1. Buat VNode.

    vnode create

    Output mencakup VirtualNodeId:

    {"RequestId":"AB772F9D-2FEF-5BFD-AAFB-DA3444851F29","VirtualNodeId":"vnd-7xvetkyase7gb62u****"}
  2. Verifikasi node tersebut.

    kubectl get node

    VNode muncul dengan STATUS Ready:

    NAME                                    STATUS     ROLES                  AGE    VERSION
    cn-hangzhou.vnd-7xvetkyase7gb62u****    Ready      agent                  174m   v1.20.6
    vnode-test001                           Ready      control-plane,master   23h    v1.20.6
    vnode-test002                           Ready      <none>                 22h    v1.20.6

Cegah penjadwalan DaemonSet ke VNode

Karena VNode adalah node virtual, ia tidak dapat menjalankan DaemonSet. Setelah membuat VNode, Anda harus memodifikasi DaemonSet kube-proxy dan mengonfigurasi nodeAffinity agar tidak dijadwalkan ke VNode.

  1. Modifikasi konfigurasi DaemonSet.

    kubectl -n kube-system edit ds kube-proxy
  2. Konfigurasi nodeAffinity.

    Tambahkan konten YAML berikut ke spec.template.spec:

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: type
              operator: NotIn
              values:
              - virtual-kubelet

Jadwalkan Pod ke VNode

Setelah membuat VNode, Anda dapat menjadwalkan Pod ke VNode dengan salah satu metode berikut:

  • Penjadwalan manual

    Anda dapat menjadwalkan Pod secara manual ke VNode dengan mengonfigurasi nodeSelector dan tolerations, atau dengan menentukan nodeName. Untuk informasi lebih lanjut, lihat Jadwalkan Pod ke VNode.

  • Penjadwalan otomatis

    Setelah Anda deploy komponen eci-profile, Anda dapat mengonfigurasi selector kustom untuk secara otomatis menjadwalkan Pod yang memenuhi syarat ke VNode. Untuk informasi lebih lanjut, lihat Gunakan eci-profile untuk menjadwalkan Pod ke VNode.

Buat konektivitas jaringan Pod

Pod pada VNode menerima ENI dan alamat IP internal dari vSwitch VPC.

Secara default, Pod VNode tidak dapat mengakses Pod pada jaringan overlay kluster (Flannel, Calico, atau Cilium), meskipun sebaliknya berfungsi. Tambahkan entri rute ke tabel rute VPC untuk mengarahkan lalu lintas outbound dari Pod VNode ke node ECS yang tepat.

Contoh konfigurasi rute:

  • Skenario contoh

    Dalam contoh ini, test1 berjalan di VNode dan test2 di node ECS. Secara default, test2 dapat mengakses test1, tetapi tidak sebaliknya.

    NAME      READY     RESTARTS    AGE    IP                NODE                                   NOMINATED NODE   READINESS NODE
    test1     1/1       0           58s    192.168.0.245     cn-hangzhou.vnd-7xvetkyase7gb62u****   <none>           <none>
    test2     1/1       0           35s    10.88.1.4         vnode-test002                          <none>           <none>
  • Prosedur

    1. Masuk ke Konsol VPC.

    2. Di panel navigasi kiri, klik Route Tables.

    3. Beralih ke wilayah kluster Anda, temukan tabel rute VPC, lalu klik ID-nya.

    4. Pada tab Route Entry List, klik tab Custom Route.

    5. Klik Add Route Entry.

    6. Pada panel Add route entry, konfigurasikan entri rute lalu klik OK.

      Contoh konfigurasi:

      • Destination CIDR Block: Masukkan blok CIDR untuk Pod pada node ECS target, misalnya 10.88.1.0/24.

      • Next Hop Type: Pilih ECS Instance.

      • ECS Instance: Pilih node ECS target.

  • Verifikasi hasil

    Jalankan kubectl exec untuk membuka shell di test1 dan ping test2. Tanggapan sukses mengonfirmasi bahwa test1 kini dapat mengakses test2.

Dokumen terkait