全部产品
Search
文档中心

Elastic Container Instance:Menyebarkan VNode di kluster Kubernetes yang dikelola sendiri untuk terhubung ke Elastic Container Instance

更新时间:Jul 02, 2025

Untuk menghubungkan kluster Kubernetes yang dikelola sendiri yang dihosting pada instance Elastic Compute Service (ECS) ke Elastic Container Instance, Anda harus menyebarkan VNode di dalam kluster. Topik ini menjelaskan cara menyebarkan VNode di kluster Kubernetes yang dikelola sendiri di dalam virtual private cloud (VPC) yang sama.

Informasi latar belakang

Integrasi Elastic Container Instance dengan Kubernetes memberikan solusi bertingkat untuk manajemen sumber daya Kubernetes. Elastic Container Instance menjadwalkan dan mengelola pod di arsitektur bawah, sedangkan Kubernetes mengelola beban kerja di lapisan platform. Jika Anda membuat kluster Kubernetes yang dikelola sendiri pada instance ECS, Anda dapat menyebarkan VNode di dalam kluster untuk menggunakan Elastic Container Instance. Untuk informasi lebih lanjut, lihat Menghubungkan Kluster Kubernetes yang Dikelola Sendiri ke Elastic Container Instance.

Prasyarat

  • Kluster Kubernetes yang dikelola sendiri versi 1.13 hingga 1.30 telah dibuat pada instance ECS menggunakan kubeadm.

  • Plug-in jaringan Flannel, Calico, atau Cilium telah diterapkan di dalam kluster.

Instal VNodectl

Elastic Container Instance menyediakan CLI VNodectl untuk menyebarkan dan mengelola VNode. Disarankan untuk menginstal VNodectl pada node master dari kluster Kubernetes.

  1. Hubungkan ke kluster Kubernetes Anda.

  2. Unduh paket instalasi 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 file paket VNodectl yang telah diunduh.

    tar xvf vnodectl.tar.gz
  4. Salin file paket yang diekstrak ke direktori yang ditentukan.

    cp vnodectl /usr/local/bin/vnode

Konfigurasikan file ~/.vnode/config

  1. Ubah isi file ~/.vnode/config.

    vim ~/.vnode/config

    Ubah isi file ~/.vnode/config berdasarkan kebutuhan bisnis Anda. Contoh:

    Penting
    • File kubeconfig harus memiliki izin cluster-admin. Jika Anda ingin mengurangi ruang lingkup izin file kubeconfig, lihat Konfigurasikan Kluster.

    • Pastikan alamat apiserver yang ditentukan dalam file kubeconfig dapat diakses oleh VNode.

    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 yang terhubung ke VNode.
          security-group-id: sg-7xv5tcch4kjdr65t****             # ID grup keamanan tempat VNode berada.
          kubeconfig: /path/to/kubeconfig                        # File kubeconfig dari kluster.
    current-context: default
  2. Jalankan VNode untuk memuat konfigurasi dalam konteks.

    vnode config set-context <context-name>

Buat VNode

  1. Buat VNode.

    vnode create

    Contoh kode berikut menunjukkan contoh keluaran. Nilai parameter VirtualNodeId adalah ID VNode yang dihasilkan.

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

    kubectl get node

    Contoh kode berikut menunjukkan contoh keluaran, yang menunjukkan bahwa VNode telah disebarkan di dalam kluster.

    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 DaemonSets dijadwalkan ke VNode

DaemonSets tidak dapat berjalan di VNode karena VNode bukanlah node nyata. Setelah Anda membuat VNode, Anda perlu memodifikasi DaemonSet di kube-proxy dan mengonfigurasi nodeAffinity untuk mencegah DaemonSets dijadwalkan ke VNode.

  1. Modifikasi konfigurasi DaemonSet.

    kubectl -n kube-system edit ds kube-proxy
  2. Konfigurasikan 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 Anda membuat VNode, Anda dapat menggunakan salah satu metode berikut untuk menjadwalkan pod ke VNode. Kemudian, Anda dapat menjalankan pod sebagai instance kontainer elastis di dalam VNode.

  • Penjadwalan Manual

    Anda dapat mengonfigurasi parameter nodeSelector dan tolerations atau menentukan parameter nodeName untuk menjadwalkan pod ke VNode. Untuk informasi lebih lanjut, lihat Jadwalkan Pod ke VNode.

  • Penjadwalan Otomatis

    Setelah Anda menyebarkan komponen eci-profile, Anda dapat menentukan parameter Selector. Dengan cara ini, sistem secara otomatis menjadwalkan pod yang memenuhi kondisi yang ditentukan oleh Selector ke VNode. Untuk informasi lebih lanjut, lihat Gunakan eci-profile untuk Menjadwalkan Pod ke VNode.

Jadikan pod di jaringan overlay kluster Kubernetes yang dikelola sendiri dapat diakses oleh pod berbasis Elastic Container Instance

Pod yang dijadwalkan ke VNode menggunakan antarmuka jaringan elastis (ENI) dari vSwitch di VPC tempat pod tersebut berada. Secara default, pod diberi alamat IP internal.

Pod berbasis Elastic Container Instance tidak dapat mengakses pod di jaringan overlay (Flannel, Calico, atau Cilium) dari kluster Kubernetes yang dikelola sendiri. Namun, pod di jaringan overlay dari kluster Kubernetes yang dikelola sendiri dapat mengakses pod berbasis Elastic Container Instance. Jika pod berbasis Elastic Container Instance perlu mengakses pod di jaringan overlay dari kluster yang dikelola sendiri, tambahkan entri rute ke tabel rute VPC tempat pod berbasis Elastic Container Instance berada. Dengan cara ini, paket dari pod berbasis Elastic Container Instance dapat dirutekan melalui entri rute ke node ECS yang sesuai di kluster yang dikelola sendiri.

Konfigurasi Contoh:

  • Skenario Contoh

    Misalnya, sebuah kluster berisi dua pod. Satu pod (test1) berjalan di VNode. Pod lainnya (test2) berjalan di node ECS. Secara default, test2 dapat mengakses test1, tetapi test1 tidak dapat mengakses test2.

    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 sebelah kiri, klik Route Tables.

    3. Beralih ke wilayah tempat instance kontainer elastis berada, temukan tabel rute dari VPC tempat pod berbasis Elastic Container Instance berada, dan klik ID tabel rute.

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

    5. Klik Add Route Entry.

    6. Di kotak dialog yang muncul, konfigurasikan entri rute dan klik OK.

      Dalam contoh ini, konfigurasi berikut digunakan:

      • Destination CIDR Block: Masukkan blok CIDR dari vSwitch yang terhubung ke node ECS. Contoh: 10.88.1.0/24.

      • Next Hop Type: Pilih ECS Instance dari daftar drop-down.

      • ECS Instance: Pilih node ECS.

  • Verifikasi Hasil

    Jalankan perintah kubectl exec untuk masuk ke kontainer test1 dan kemudian jalankan perintah ping. Jika Anda dapat melakukan ping ke alamat IP test2, koneksi antara kedua pod telah terbentuk dan test1 dapat mengakses test2.

Referensi