全部产品
Search
文档中心

Elastic Container Instance:Menyebarkan VNode secara manual di kluster Kubernetes yang dikelola sendiri

更新时间:Jul 06, 2025

Jika Anda membuat kluster Kubernetes yang dikelola sendiri di pusat data atau pada instance Elastic Compute Service (ECS), Anda harus menyebarkan VNode di dalam kluster untuk menggunakan Elastic Container Instance. Topik ini menjelaskan cara mengonfigurasi sertifikat kubeconfig dan menyebarkan VNode secara manual di kluster Kubernetes. Setelah VNode disebarkan, Anda dapat menggunakan Elastic Container Instance di dalam kluster Kubernetes.

Prasyarat

  • Kluster Kubernetes versi 1.16 hingga 1.30 telah disebarkan.

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

Persiapan

Sebelum menyebarkan VNode di kluster Kubernetes yang dikelola sendiri, persiapkan parameter yang diperlukan untuk membuat VNode dan pahami izin yang dibutuhkan untuk menyebarkan VNode di dalam kluster. Tabel berikut menjelaskan parameter yang diperlukan untuk membuat VNode.

Parameter

Deskripsi

Operasi

Wilayah

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

Elastic container instance dan sumber daya terkait dibuat di wilayah yang Anda pilih.

Anda dapat mengetahui wilayah tempat Elastic Container Instance tersedia melalui Konsol Elastic Container Instance atau dengan memanggil operasi API DescribeRegions.

VPC

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

Elastic container instance dan sumber daya terkait dibuat di VPC yang Anda konfigurasikan.

Catatan

Jika kluster Kubernetes Anda disebarkan 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 elastic container instance dan sumber daya terkait di VPC, Anda harus menentukan vSwitch. Anda juga dapat menentukan beberapa vSwitch. Dalam kasus ini, sistem akan otomatis memilih vSwitch dari kumpulan vSwitch.

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

Grup Keamanan

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

Elastic container instance dan sumber daya terkait ditambahkan ke grup keamanan yang Anda pilih.

Catatan

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

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

  • Aturan lainnya mengizinkan akses ke port layanan 10250 dan 10255 dari VNode melalui endpoint server API Kubernetes.

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

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 bagi node untuk mengajukan permintaan pembuatan sertifikat.

system:certificates.k8s.io:certificatesigningrequests:selfnodeclient

Izin bagi node untuk 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. Misalnya, 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).

Konfigurasikan kluster untuk menghasilkan sertifikat kubeconfig

Untuk menyebarkan VNode di kluster Kubernetes yang dikelola sendiri, Anda harus menggunakan sertifikat kubeconfig. Sebelum membuat VNode, Anda harus menghasilkan sertifikat kubeconfig untuk VNode.

Catatan

Jika Anda menggunakan sertifikat admin, lewati bagian ini.

  1. Hubungkan ke kluster Kubernetes Anda.

  2. Unduh dan jalankan skrip konfigurasi. Dalam mode TLS bootstrapping atau ServiceAccount, hasilkan sertifikat kubeconfig. TLS adalah singkatan dari Transport Layer Security.

    TLS bootstrapping

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

    curl -fsSL https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnode-deploy.sh | bash -s -- bootstrap

    ServiceAccount

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

    curl -fsSL https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnode-deploy.sh | bash -s -- common
  3. Lihat isi kubeconfig.

    Kubeconfig yang dihasilkan bernama vnode-config. Jalankan perintah berikut untuk melihat isi kubeconfig:

    cat vnode-config

    Saat Anda melihat isi kubeconfig, perhatikan item berikut:

    • Pastikan bahwa VPC tempat VNode berada dapat terhubung ke server. Untuk memastikan VPC dapat terhubung ke server, VNode dan server harus berada di VPC yang sama, atau koneksi antara VPC dan server telah terbentuk.

      • Jika alamat server adalah alamat IP, pastikan bahwa Anda dapat mengakses alamat IP tersebut dari VPC tempat VNode berada.

      • Jika alamat server adalah nama domain, pastikan bahwa nama domain dapat diselesaikan di VPC Alibaba Cloud. Selain itu, dari VPC tempat VNode berada, Anda harus dapat mengakses alamat IP yang ditunjuk oleh nama domain tersebut.

    • Jika isi dari certificate-authority-data kosong, periksa apakah bidang PATH digunakan di ~/.kube/config.

    Kode berikut memberikan contoh isi kubeconfig.

    TLS bootstrapping

    apiVersion: v1
    kind: Config
    current-context: kubernetes-admin@kubernetes
    contexts:
    - name: kubernetes-admin@kubernetes
      context:
        cluster: kubernetes-admin@kubernetes
        user: vnode
        namespace: kube-system
    clusters:
    - name: kubernetes-admin@kubernetes
      cluster:
        certificate-authority-data: "*****************************************=="
        server: https://10.16.XX.XX:6443
    users:
    - name: vnode
      user:
        token: ******.****************

    ServiceAccount

    apiVersion: v1
    kind: Config
    current-context: kubernetes-admin@kubernetes
    contexts:
    - name: kubernetes-admin@kubernetes
      context:
        cluster: kubernetes-admin@kubernetes
        user: vnode
        namespace: kube-system
    clusters:
    - name: kubernetes-admin@kubernetes
      cluster:
        certificate-authority-data: "*****************************************=="
        server: https://10.16.XX.XX:6443
    users:
    - name: vnode
      user:
        token: ***********************************************

Buat VNode

Prosedur

Anda dapat menggunakan Konsol Elastic Container Instance atau memanggil operasi API untuk membuat VNode.

Gunakan Konsol Elastic Container Instance

  1. Masuk ke Konsol Elastic Container Instance.

  2. Di bilah navigasi atas, pilih wilayah.

  3. Di panel navigasi kiri, klik Virtual Node.

  4. Klik Create Virtual Node.

  5. Atur parameter dan klik OK.

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    VPC, vSwitch, dan Grup Keamanan

    VPC dan grup keamanan tempat VNode berada. vSwitch yang terkait dengan VNode. Untuk informasi tentang cara membuat VPC, vSwitch, dan grup keamanan, lihat bagian "Persiapan" dalam topik ini.

    KubeConfig

    Sertifikat kubeconfig kluster Kubernetes tempat VNode disebarkan. Untuk informasi tentang cara menghasilkan sertifikat kubeconfig, lihat bagian "Konfigurasikan kluster untuk menghasilkan sertifikat kubeconfig" dalam topik ini.

    TlsBootstrapEnabled

    Menentukan apakah akan mengaktifkan TLS bootstrapping.

    Jika sertifikat kubeconfig telah dihasilkan menggunakan mode TLS bootstrapping, aktifkan TLS strapping saat Anda membuat VNode. Setelah Anda mengaktifkan TLS strapping, rotasi sertifikat juga diaktifkan. Sistem secara otomatis mengajukan sertifikat kubeconfig baru untuk VNode ketika sertifikat kubeconfig saat ini hampir kedaluwarsa.

    Tag

    Tag yang terikat ke VNode.

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

    Taints

    Taint yang terikat ke VNode.

    Grup Sumber Daya

    Grup sumber daya adalah mekanisme di mana sumber daya dikelola berdasarkan grup di 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.

Panggil operasi API

Anda dapat memanggil operasi API CreateVirtualNode untuk membuat VNode. Tabel berikut mencantumkan parameter utama. Untuk informasi lebih lanjut, lihat CreateVirtualNode.

Parameter

Tipe

Contoh

Deskripsi

RegionId

String

cn-shanghai

ID wilayah VNode.

VSwitchId

String

vsw-2ze23nqzig8inprou****

ID vSwitch. vSwitch terkait dengan VNode dan instance container elastis di dalam VNode.

Anda dapat menentukan 1 hingga 10 vSwitch untuk VPC.

SecurityGroupId

String

sg-2ze81zoc3yl7a3we****

ID grup keamanan. Tentukan grup keamanan. VNode dan instance container elastis di dalam VNode ditambahkan ke grup keamanan.

KubeConfig

String

JTVDbmFwaVZlcnNpb24lM0ElMjB2MSU1Q25jbHVzdGVycyUzQSU1Q24tJTIwY2x1c3RlciUzQSU1Q24uLi******

Sertifikat kubeconfig kluster Kubernetes tempat VNode disebarkan. Nilai harus dienkripsi Base64.

TlsBootstrapEnabled

Boolean

true

Menentukan apakah akan mengaktifkan TLS bootstrapping. Jika sertifikat kubeconfig telah dihasilkan menggunakan mode TLS bootstrapping, aktifkan TLS strapping saat Anda membuat VNode. Setelah Anda mengaktifkan TLS strapping, rotasi sertifikat juga diaktifkan. Sistem secara otomatis mengajukan sertifikat kubeconfig baru untuk VNode ketika sertifikat kubeconfig saat ini hampir kedaluwarsa.

Periksa hasilnya

Tunggu beberapa menit setelah Anda membuat VNode. Kemudian, masuk ke kluster Kubernetes dan jalankan perintah kubectl get nodes untuk melihat informasi simpul.

  • Jika informasi VNode ditampilkan, VNode berhasil dibuat. Output perintah berikut dikembalikan:

    vnode1

  • Jika tidak ada informasi VNode yang ditampilkan, VNode gagal dibuat. Kami sarankan Anda menangani masalah berdasarkan peristiwa terkait VNode.

    Di halaman Virtual Node di Konsol Elastic Container Instance, klik ID VNode yang gagal dibuat. Di tab Events, Anda dapat melihat peristiwa tentang VNode.

    Kesalahan peristiwa umum:

    • failed to get kubernetes server version, Get \"https://10.50.XX.XX:6443/version?timeout=32s\": net/http: request canceled (Client.Timeout exceeded while awaiting headers

      Pesan kesalahan ini menunjukkan bahwa VPC tempat VNode berada tidak dapat terhubung ke server API Kubernetes. Untuk menyelesaikan masalah ini, periksa apakah VNode dan server API berada di VPC yang sama. Jika tidak, pastikan bahwa koneksi antara VPC tempat VNode berada dan server API telah terbentuk.

    • Gagal mendapatkan versi server Kubernetes, Get "https://lb.kubesphere.local:6443/version?timeout=32s": dial tcp: lookup lb.kubesphere.local on 100.100.X.:53: host tidak ditemukan

      Pesan kesalahan ini menunjukkan bahwa nama domain server API Kubernetes tidak dapat diselesaikan di VPC Alibaba Cloud. Anda dapat menggunakan Alibaba Cloud DNS PrivateZone untuk menyelesaikan nama domain.

Catatan

Jika Anda memiliki persyaratan atau mengalami masalah saat menyebarkan VNode di kluster Kubernetes yang dikelola sendiri, Anda dapat bergabung dengan grup DingTalk dengan ID 44666389 untuk mendapatkan bantuan.

Cegah DaemonSets agar tidak dijadwalkan ke VNode

DaemonSets tidak dapat berjalan di VNode karena VNode bukan 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 container 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 menerapkan komponen eci-profile, Anda dapat menentukan parameter Selector. Dengan demikian, sistem akan 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.