全部产品
Search
文档中心

Elastic Container Instance:Gunakan VNodectl untuk menerapkan VNode di cluster Kubernetes yang dikelola sendiri

更新时间:Jul 06, 2025

Jika Anda telah membuat cluster Kubernetes yang dikelola sendiri di pusat data atau pada instance Alibaba Cloud Elastic Compute Service (ECS) dan ingin menggunakan instance kontainer elastis di dalamnya, Anda harus menerapkan VNode. Elastic Container Instance menyediakan CLI VNodectl untuk menerapkan dan mengelola VNode. Topik ini menjelaskan cara menggunakan VNodectl untuk menerapkan VNode secara otomatis di dalam cluster Kubernetes.

Prasyarat

  • Cluster Kubernetes versi 1.16 hingga 1.30 telah diterapkan.

  • Jika cluster Kubernetes Anda diterapkan di pusat data, pastikan bahwa pusat data dan Virtual Private Cloud (VPC) tempat pod berbasis Elastic Container Instance berada terhubung satu sama lain melalui Express Connect, Smart Access Gateway, atau VPN Gateway. Untuk informasi lebih lanjut, lihat topik-topik berikut:

Persiapan

Sebelum menerapkan VNode di cluster Kubernetes yang dikelola sendiri, siapkan parameter yang diperlukan untuk membuat VNode dan pahami izin yang dibutuhkan untuk menerapkannya di dalam cluster. Tabel berikut menjelaskan parameter yang diperlukan untuk membuat VNode.

Parameter

Deskripsi

Operasi

Wilayah

Wilayah adalah lokasi geografis tempat pusat data Alibaba Cloud ditempatkan. Pilih wilayah berdasarkan lokasi pengguna akhir dan harga sumber daya. Untuk informasi lebih lanjut, lihat Wilayah dan Zona.

Instance kontainer elastis dan sumber daya terkait dibuat di wilayah yang dipilih.

Anda dapat menanyakan wilayah di mana Elastic Container Instance tersedia melalui Konsol Elastic Container Instance atau dengan memanggil operasi API DescribeRegions.

VPC

VPC adalah jaringan pribadi yang didirikan di Alibaba Cloud. VPC saling terisolasi secara logis. Untuk informasi lebih lanjut, lihat Apa itu VPC?

Instance kontainer elastis dan sumber daya terkait dibuat di VPC yang dikonfigurasikan.

Catatan

Jika cluster Kubernetes Anda diterapkan di pusat data, pastikan bahwa jaringan pusat data dan VPC telah terhubung.

Anda dapat membuat dan melihat VPC di halaman VPCs di Konsol VPC.

vSwitch

vSwitch adalah perangkat jaringan dasar yang menghubungkan sumber daya cloud yang berbeda. Jika Anda ingin membuat instance kontainer elastis dan sumber daya terkait di VPC, Anda harus menentukan vSwitch. Anda juga dapat menentukan beberapa vSwitch, dan sistem akan secara otomatis memilih dari kumpulan tersebut.

Anda dapat membuat dan melihat vSwitch di halaman vSwitch di Konsol VPC dan memilih vSwitch di VPC yang dipilih.

Grup Keamanan

Grup keamanan adalah firewall virtual yang mengontrol lalu lintas masuk dan keluar dari sumber daya dalam grup untuk meningkatkan keamanan jaringan. Untuk informasi lebih lanjut tentang grup keamanan, lihat Ikhtisar.

Instance kontainer elastis dan sumber daya terkait ditambahkan ke grup keamanan yang dipilih.

Catatan

Kami merekomendasikan agar Anda memilih kelompok keamanan tingkat lanjut dan menambahkan aturan grup keamanan masuk berikut:

  • Satu aturan mengizinkan akses ke semua port dari 1 hingga 65.535 melalui blok CIDR dari VPC.

  • Aturan lainnya mengizinkan akses ke port layanan 10.250 dan 10.255 dari VNode melalui titik akhir server API Kubernetes.

Anda dapat membuat dan melihat grup keamanan di halaman Security Groups di Konsol ECS dan memilih grup keamanan di VPC yang dipilih.

Untuk membuat VNode, Anda harus mengonfigurasi izin standar untuk node Kubernetes asli dan izin tambahan untuk VNode, seperti yang ditunjukkan dalam tabel berikut.

Tipe

Izin

Deskripsi

Izin standar

system:node

Izin standar untuk node.

system:node-proxier

Izin standar untuk kube-proxy.

system:certificates.k8s.io:certificatesigningrequests:nodeclient

Izin untuk node mengajukan permintaan pembuatan sertifikat.

system:certificates.k8s.io:certificatesigningrequests:selfnodeclient

Izin untuk node mengajukan permintaan pembuatan sertifikat berdasarkan sertifikat yang ada. Izin ini digunakan untuk meminta rotasi sertifikat.

Izin tambahan

pods update dan pods patch

Izin untuk memperbarui anotasi pod. Sebagai contoh, Anda dapat menambahkan anotasi komputasi seperti k8s.aliyun.com/eci-instance-id ke pod.

pvc update dan pvc patch

Izin untuk memperbarui anotasi PersistentVolumeClaims (PVC).

Instal VNodectl

Sebelum menggunakan VNodectl untuk menerapkan VNode di cluster Kubernetes yang dikelola sendiri, Anda harus menginstal VNodectl. Dapatkan paket instalasi sesuai dengan lingkungan cluster Anda dan instal VNodectl.

Sistem operasi

Arsitektur CPU

Tautan ke paket instalasi

macOS

AMD64

macOS_AMD64

ARM64

macOS_ARM64

Linux

AMD64

Linux_AMD64

ARM64

Linux_ARM64

Windows

AMD64

Windows_AMD64

ARM64

Windows_ARM64

Kami merekomendasikan agar Anda menginstal VNodectl pada node Master cluster Kubernetes Anda. Untuk menginstal VNodectl, ikuti langkah-langkah berikut:

  1. Hubungkan ke cluster 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 diekstraksi ke direktori tertentu.

    cp vnodectl /usr/local/bin/vnode
Catatan
  • Anda dapat menambahkan --dry ke perintah vnode untuk verifikasi klien.

  • Jika terjadi kesalahan kompatibilitas versi API saat menjalankan perintah vnode, tambahkan --kubernetes-version untuk menentukan versi Kubernetes dari cluster.

Konfigurasi cluster

Sebelum membuat VNode, Anda harus menghasilkan sertifikat kubeconfig untuk VNode. Kemudian, Anda dapat menggunakan kubeconfig untuk menerapkan VNode di cluster Kubernetes yang dikelola sendiri. Anda dapat menghasilkan kubeconfig dalam mode TLS Bootstrap atau mode ServiceAccount.

Catatan
  • Jika Anda memiliki persyaratan keamanan, kami merekomendasikan agar Anda menggunakan mode TLS bootstrapping. Dalam mode ini, komponen vnode-approver secara otomatis diterapkan. Komponen vnode-approver digunakan untuk menyetujui permintaan penandatanganan sertifikat (CSRs) yang dikirim oleh VNode. vnode-approver memiliki kode sumber terbuka di GitHub. Untuk informasi lebih lanjut, lihat vnode-approver.

  • Mode ServiceAccount tidak mendukung rotasi sertifikat. Saat menghasilkan sertifikat kubeconfig, pastikan token memiliki masa berlaku cukup lama atau permanen untuk mencegah kegagalan VNode karena kedaluwarsa kubeconfig.

TLS Bootstrap

  1. Hasilkan sertifikat kubeconfig.

    1. Siapkan informasi yang diperlukan untuk mengonfigurasi cluster.

      Parameter

      Deskripsi

      Operasi

      Contoh

      kubeconfig

      Parameter ini digunakan untuk mengonfigurasi izin yang diperlukan untuk menerapkan VNode di cluster.

      Dapatkan sertifikat kubeconfig dari jalur default ~/.kube/config. Anda juga dapat memperoleh sertifikat kubeconfig dari jalur lain.

      /path/to/kubeconfig

      Cluster CA

      Parameter ini digunakan untuk menghasilkan sertifikat kubeconfig yang diperlukan untuk menerapkan VNode di cluster. Anda dapat menggunakan otoritas sertifikat (CA) di kubeconfig yang memiliki izin admin. Kami merekomendasikan agar Anda menggunakan CA yang ditentukan saat Anda memulai server API.

      Jalankan perintah ps aux | grep apiserver dan dapatkan nilai dari --client-ca-file dari hasil perintah.

      /path/to/ca.crt

      String Koneksi Server API

      Parameter ini digunakan untuk komunikasi, validasi, dan autentikasi cluster.

      Jalankan kubeconfig dan dapatkan string koneksi server API dari hasil.

      https://8.134.XX.XX:6443

      tokenId

      Parameter ini digunakan untuk menghasilkan token TLS bootstrap dan membuat rahasia token bootstrap.

      Tentukan nilai. Nilainya harus berupa string alfanumerik enam karakter.

      eci123

      tokenSecret

      Tentukan nilai. Nilainya harus berupa string alfanumerik 16 karakter.

      eci1233333333333

    2. Terapkan komponen vnode-approver.

      vnode addon enable vnode-approver
    3. Konfigurasikan cluster untuk menghasilkan sertifikat kubeconfig.

      Tentukan informasi cluster aktual untuk parameter dalam perintah. Contoh perintah:

      vnode cluster setup --kubeconfig  /path/to/kubeconfig  --bootstrap --bootstrap-token-id <token-id> --bootstrap-token-secret <token-secret> --apiserver-address https://8.134.XX.XX:6443 --cluster-ca-path  /path/to/ca.crt
  2. Validasi apakah VNode dapat diterapkan di cluster.

    vnode cluster validate

    Output perintah berikut dikembalikan. Secara default, sertifikat kubeconfig disimpan di ~/.vnode/deploy/kubeconfig.

    kubeconfig can't be empty

ServiceAccount

  1. Hasilkan sertifikat kubeconfig.

    1. Siapkan informasi yang diperlukan untuk mengonfigurasi cluster.

      Parameter

      Deskripsi

      Operasi

      Contoh

      kubeconfig

      Parameter ini digunakan untuk mengonfigurasi izin yang diperlukan untuk menerapkan VNode di cluster.

      Dapatkan sertifikat kubeconfig dari jalur default ~/.kube/config. Anda juga dapat memperoleh sertifikat kubeconfig dari jalur lain.

      /path/to/kubeconfig

      Cluster CA

      Parameter ini digunakan untuk menghasilkan sertifikat kubeconfig yang diperlukan untuk menerapkan VNode di cluster. Anda dapat menggunakan CA di kubeconfig yang memiliki izin admin. Kami merekomendasikan agar Anda menggunakan CA yang ditentukan saat Anda memulai server API.

      Jalankan perintah ps aux | grep apiserver dan dapatkan nilai dari --client-ca-file dari hasil perintah.

      /path/to/ca.crt

      String Koneksi Server API

      Parameter ini digunakan untuk komunikasi, validasi, dan autentikasi cluster.

      Jalankan kubeconfig dan dapatkan string koneksi server API dari hasil.

      https://8.134.XX.XX:6443

    2. Konfigurasikan cluster untuk menghasilkan sertifikat kubeconfig.

      Tentukan informasi cluster aktual untuk parameter dalam perintah. Contoh perintah:

      vnode cluster setup --kubeconfig /path/to/kubeconfig --apiserver-address https://8.134.XX.XX:6443 --cluster-ca-path /path/to/ca.crt
  2. Validasi apakah VNode dapat diterapkan di cluster.

    vnode cluster validate

    Output perintah berikut dikembalikan. Secara default, sertifikat kubeconfig disimpan di ~/.vnode/deploy/kubeconfig.

    kubeconfig can't be empty

Konfigurasikan file ~/.vnode/config

File ~/.vnode/config berisi informasi konfigurasi VNode. VNodectl membaca file ini saat dijalankan. Sebelum membuat VNode, Anda harus mengonfigurasi file ini.

  1. Jalankan informasi konfigurasi yang diperlukan agar VNode dapat berjalan.

    vnode config default

    Tabel berikut menjelaskan parameter konteks dalam informasi konfigurasi.

    Parameter

    Diperlukan

    Deskripsi

    name

    Ya

    Nama konteks.

    vnode-name

    Tidak

    Nama VNode. Kami merekomendasikan agar Anda tidak mengonfigurasi parameter ini untuk memungkinkan sistem menghasilkan nilai unik.

    region-id

    Ya

    ID wilayah tempat VNode berada. Untuk informasi tentang cara memilih wilayah, lihat Persiapan dalam topik ini.

    access-key-id

    Ya

    Saat Anda memanggil operasi API, Anda harus menggunakan pasangan AccessKey untuk menyelesaikan verifikasi identitas. Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.

    access-key-secret

    Ya

    vswitch-id

    Ya

    ID vSwitch yang terkait dengan VNode. Anda dapat menentukan beberapa vSwitch. Untuk informasi tentang cara membuat vSwitch, lihat Persiapan dalam topik ini.

    security-group-id

    Ya

    ID grup keamanan tempat VNode berada. Untuk informasi tentang cara membuat grup keamanan, lihat Persiapan dalam topik ini.

    resource-group-id

    Tidak

    Grup sumber daya tempat VNode berada.

    Grup sumber daya adalah mekanisme di mana sumber daya dikelola berdasarkan grup dalam akun Alibaba Cloud. Setiap akun Alibaba Cloud diberi grup sumber daya default. Untuk informasi lebih lanjut, lihat Apa itu Resource Management?

    Jika Anda tidak menentukan grup sumber daya, VNode akan ditambahkan ke grup sumber daya default.

    kubeconfig

    Ya

    Jalur ke sertifikat kubeconfig yang diperlukan untuk menerapkan VNode di cluster. Jalur ini dihasilkan secara otomatis setelah Anda mengonfigurasi cluster. Secara default, sertifikat kubeconfig disimpan di ~/.vnode/deploy/kubeconfig.

    taints

    Tidak

    Taint yang terikat pada VNode.

    tags

    Tidak

    Tag yang terikat pada VNode.

    Tag dapat digunakan untuk mengelola tagihan terpisah. Setelah Anda mengikat tag kustom ke VNode, Anda dapat menggunakan tag tersebut untuk menyaring biaya instance dalam VNode saat melihat analisis biaya. Untuk informasi lebih lanjut, lihat Lihat tagihan terpisah berdasarkan tag.

    network-type

    Tidak

    Tipe jaringan layanan kontrol Elastic Container Instance yang diakses oleh VNodectl.

    • Parameter ini kosong secara default. Ini menentukan Internet.

    • Jika VNodectl termasuk dalam VPC, atur parameter ini ke vpc. Ini menentukan VPC.

  2. Arahkan ulang informasi konfigurasi ke file ~/.vnode/config dan konfigurasikan parameter dalam file tersebut.

    vnode config default > ~/.vnode/config
    vim ~/.vnode/config

    Ubah isi file ~/.vnode/config sesuai dengan kebutuhan bisnis Anda. Dalam contoh berikut, hanya parameter yang diperlukan yang dikonfigurasi.

    kind: vnode
    contexts:
        - name: default
          region-id: cn-guangzhou
          access-key-id: <yourAccessKeyID>
          access-key-secret: <yourAccessKeySecret>
          vswitch-id: vsw-7xv2yk45qp5etidgf****
          security-group-id: sg-7xv5tcch4kjdr65t****
          kubeconfig: ~/.vnode/deploy/kubeconfig
    current-context: default
  3. Verifikasi informasi konfigurasi yang dibaca oleh VNode saat berjalan.

    vnode config
  4. Pindahkan konteks untuk memungkinkan VNode memuat konfigurasi dalam konteks saat berjalan.

    vnode config set-context <context-name>

Buat VNode

  1. Buat VNode.

    vnode create
    Catatan

    VNode dibuat berdasarkan konfigurasi dalam file ~/.vnode/config. Anda dapat menambahkan parameter untuk mengonfigurasi customResources, clusterDNS, dan clusterDomain. Untuk informasi lebih lanjut, lihat Kelola VNode.

    Contoh output berikut dikembalikan. Nilai VirtualNodeId adalah ID VNode yang dihasilkan.

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

    vnode list

    Contoh output berikut dikembalikan. Jika nilai STATUS adalah Ready, VNode telah dibuat.

    VNODE ID                    VNODE NAME                                   CREATED          STATUS    ZONA YANG DAPAT DIJADWALKAN
    vnd-7xvetkyase7gb62u****    vnode-cn-guangzhou-a-7xvetkyase7gb62u****    2 menit lalu     Ready     cn-guangzhou-a
  3. Lihat informasi tentang node.

    kubectl get node

    Contoh output berikut dikembalikan, yang menunjukkan bahwa VNode telah diterapkan di cluster.

    NAME                                    STATUS     ROLES                  AGE    VERSION
    cn-guangzhou.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 bukan node nyata. Setelah 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 membuat VNode, Anda dapat menggunakan salah satu metode berikut untuk menjadwalkan pod ke VNode. Kemudian, Anda dapat menjalankan pod sebagai instance kontainer elastis di 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 menerapkan 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.

Referensi