Jika Anda menjalankan kluster Kubernetes yang dikelola sendiri di pusat data on-premises atau pada instans Elastic Compute Service (ECS) Alibaba Cloud dan ingin menggunakan Elastic Container Instance (ECI), Anda harus men-deploy virtual node (VNode) di kluster tersebut. Untuk menyederhanakan deployment dan manajemen VNode, ECI menyediakan antarmuka baris perintah (CLI) VNodectl. Topik ini menjelaskan cara menggunakan VNodectl untuk men-deploy VNode secara otomatis di kluster Kubernetes yang dikelola sendiri.
Prasyarat
Kluster Kubernetes versi 1.16 hingga 1.30 telah di-deploy.
Jika kluster Kubernetes Anda di-deploy di pusat data, pastikan pusat data tersebut dan virtual private cloud (VPC) tempat Pod berbasis Elastic Container Instance berada saling terhubung melalui Express Connect, Smart Access Gateway (SAG), atau VPN Gateway. Untuk informasi selengkapnya, lihat topik berikut:
Persiapan
Sebelum men-deploy VNode di kluster Kubernetes yang dikelola sendiri, siapkan informasi parameter yang diperlukan untuk membuat VNode dan pahami izin yang dibutuhkan untuk men-deploy VNode di kluster tersebut. Tabel berikut menjelaskan parameter yang diperlukan untuk membuat VNode.
Parameter | Deskripsi | Operasi |
Region | Region adalah lokasi geografis tempat pusat data Alibaba Cloud di-deploy. Pilih region berdasarkan lokasi geografis pengguna akhir Anda dan harga sumber daya. Untuk informasi selengkapnya, lihat Region dan Zona. Instans container elastis dan sumber daya terkait akan dibuat di region yang Anda pilih. | Anda dapat menanyakan region tempat Elastic Container Instance tersedia melalui Konsol Elastic Container Instance atau dengan memanggil operasi API DescribeRegions. |
VPC | VPC adalah jaringan pribadi yang dibangun di Alibaba Cloud. VPC terisolasi secara logis satu sama lain. Untuk informasi selengkapnya, lihat Apa itu VPC? Instans container elastis dan sumber daya terkait akan dibuat di VPC yang Anda konfigurasikan. Catatan Jika kluster Kubernetes Anda di-deploy di pusat data, pastikan 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 berbagai sumber daya cloud. Jika Anda ingin membuat instans container elastis dan sumber daya terkait di dalam VPC, Anda harus menentukan vSwitch. Anda juga dapat menentukan beberapa vSwitch. Dalam kasus ini, sistem akan secara otomatis memilih vSwitch dari kumpulan vSwitch yang tersedia. | Anda dapat membuat dan melihat vSwitch di halaman vSwitch di Konsol VPC dan memilih vSwitch di VPC yang telah Anda pilih. |
Security Group | Security group adalah firewall virtual yang mengontrol traffic inbound dan outbound dari sumber daya dalam grup tersebut guna meningkatkan keamanan jaringan. Untuk informasi selengkapnya tentang security group, lihat Ikhtisar security group. Instans container elastis dan sumber daya terkait akan ditambahkan ke security group yang Anda pilih. Catatan Kami menyarankan Anda memilih advanced security group dan menambahkan aturan security group inbound berikut:
| Anda dapat membuat dan melihat security group di halaman Security Groups di Konsol ECS dan memilih security group di VPC yang telah Anda pilih. |
Untuk membuat VNode, Anda harus mengonfigurasi izin standar untuk node Kubernetes native dan izin tambahan untuk VNode, seperti yang ditunjukkan pada tabel berikut.
Jenis | 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 menginisiasi permintaan pembuatan sertifikat. | |
system:certificates.k8s.io:certificatesigningrequests:selfnodeclient | Izin bagi node untuk menginisiasi permintaan pembuatan sertifikat berdasarkan sertifikat yang sudah 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 yang dihitung seperti |
pvc update dan pvc patch | Izin untuk memperbarui anotasi PersistentVolumeClaims (PVC). |
Instal VNodectl
Sebelum menggunakan VNodectl, instal CLI tersebut. Unduh paket instalasi sesuai lingkungan Anda dan instal VNodectl.
Sistem operasi | Arsitektur CPU | Tautan unduh |
macOS | AMD64 | |
ARM64 | ||
Linux | AMD64 | |
ARM64 | ||
Windows | AMD64 | |
ARM64 |
Kami menyarankan Anda menginstal VNodectl pada node master kluster Kubernetes Anda. Untuk menginstal VNodectl, lakukan langkah-langkah berikut:
Hubungkan ke kluster Anda.
Unduh paket instalasi.
wget https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnodectl_0.0.5-beta_linux_amd64.tar.gz -O vnodectl.tar.gzEkstrak paket tersebut.
tar xvf vnodectl.tar.gzSalin vnodectl ke direktori tertentu.
cp vnodectl /usr/local/bin/vnode
Tambahkan
--dryke perintah vnode apa pun untuk memverifikasi di sisi klien.Jika Anda mengalami error kompatibilitas versi API saat menjalankan perintah vnode, tambahkan
--kubernetes-versionuntuk menentukan versi Kubernetes kluster Anda.
Konfigurasi kluster
VNode menggunakan file kubeconfig untuk terhubung ke kluster. Sebelum membuat VNode, buat file kubeconfig untuknya. Anda dapat membuat file kubeconfig dalam mode TLS Bootstrap atau mode ServiceAccount.
Jika Anda memiliki persyaratan keamanan, gunakan mode TLS Bootstrap. Dalam mode ini, komponen vnode-approver akan di-deploy secara otomatis. vnode-approver menyetujui certificate signing requests (CSR) yang dikirim oleh VNode. Kode sumbernya tersedia di GitHub. Untuk informasi selengkapnya, lihat vnode-approver.
Mode ServiceAccount tidak mendukung rotasi sertifikat. Saat membuat file kubeconfig, pastikan token memiliki periode validitas yang panjang atau permanen. Hal ini mencegah kegagalan VNode akibat token yang kedaluwarsa.
TLS Bootstrap
Buat file kubeconfig.
Siapkan informasi konfigurasi kluster.
Parameter Konfigurasi
Deskripsi
Cara mendapatkan
Contoh
kubeconfig
Mengonfigurasi izin yang dibutuhkan VNode di kluster.
Jalur default adalah
~/.kube/config. Anda juga dapat menggunakan file kubeconfig lainnya./path/to/kubeconfig
Cluster CA
Membuat file kubeconfig yang dibutuhkan VNode untuk terhubung ke kluster. Anda dapat menggunakan certificate authority (CA) dari file kubeconfig dengan izin admin. Kami menyarankan Anda menggunakan CA yang diteruskan saat Anda menjalankan server API.
Jalankan
ps aux | grep apiserverdan ambil nilai--client-ca-filedari output./path/to/ca.crt
Alamat server API
Digunakan untuk komunikasi kluster, autentikasi, dan otorisasi.
Cetak file kubeconfig dan ambil alamat server API dari output.
https://8.134.XX.XX:6443
tokenId
Membuat token TLS bootstrap dan membuat rahasia token bootstrap.
String alfanumerik kustom sepanjang enam karakter.
eci123
tokenSecret
String alfanumerik kustom sepanjang 16 karakter.
eci1233333333333
Deploy komponen vnode-approver.
vnode addon enable vnode-approverKonfigurasi kluster untuk membuat file kubeconfig.
Ganti nilai parameter dalam perintah dengan informasi kluster aktual Anda. Contoh:
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
Validasi apakah kluster mendukung deployment VNode.
vnode cluster validateOutput berikut akan muncul. Secara default, file kubeconfig disimpan ke
~/.vnode/deploy/kubeconfig.kubeconfig can't be empty
ServiceAccount
Buat file kubeconfig.
Siapkan informasi konfigurasi kluster.
Parameter konfigurasi
Deskripsi
Cara mendapatkan
Contoh
kubeconfig
Mengonfigurasi izin yang dibutuhkan VNode di kluster.
Jalur default adalah
~/.kube/config. Anda juga dapat menggunakan file kubeconfig lainnya./path/to/kubeconfig
Cluster CA
Membuat file kubeconfig yang dibutuhkan VNode untuk terhubung ke kluster. Anda dapat menggunakan CA dari file kubeconfig dengan izin admin. Kami menyarankan Anda menggunakan CA yang diteruskan saat Anda menjalankan server API.
Jalankan
ps aux | grep apiserverdan ambil nilai--client-ca-filedari output./path/to/ca.crt
Alamat server API
Digunakan untuk komunikasi kluster, autentikasi, dan otorisasi.
Cetak file kubeconfig dan ambil alamat server API dari output.
https://8.134.XX.XX:6443
Konfigurasi kluster untuk membuat file kubeconfig.
Ganti nilai parameter dalam perintah dengan informasi kluster aktual Anda. Contoh:
vnode cluster setup --kubeconfig /path/to/kubeconfig --apiserver-address https://8.134.XX.XX:6443 --cluster-ca-path /path/to/ca.crt
Validasi apakah kluster mendukung deployment VNode.
vnode cluster validateOutput berikut akan muncul. Secara default, file kubeconfig disimpan ke
~/.vnode/deploy/kubeconfig.kubeconfig can't be empty
Konfigurasi file ~/.vnode/config
File ~/.vnode/config berisi konfigurasi VNode. VNodectl membaca file ini saat dijalankan. Konfigurasikan file ini sebelum membuat VNode.
Cetak konfigurasi yang diperlukan untuk menjalankan VNode.
vnode config defaultTabel berikut menjelaskan field di bawah contexts dalam konfigurasi.
Field
Wajib
Deskripsi
name
Ya
Nama konteks.
vnode-name
Tidak
Nama VNode. Jangan atur field ini. Sistem akan menghasilkan nama unik secara otomatis.
region-id
Ya
ID region tempat VNode berada. Untuk informasi cara memilih region, lihat Persiapan.
access-key-id
Ya
Gunakan Pasangan Kunci Akses untuk menyelesaikan verifikasi identitas saat memanggil operasi API Alibaba Cloud. Pasangan Kunci Akses terdiri dari ID AccessKey dan Rahasia AccessKey. Untuk informasi selengkapnya, lihat Buat Pasangan Kunci Akses.
access-key-secret
Ya
vswitch-id
Ya
ID vSwitch yang terkait dengan VNode. Anda dapat menentukan beberapa vSwitch. Untuk informasi cara membuat vSwitch, lihat Persiapan.
security-group-id
Ya
ID security group tempat VNode berada. Untuk informasi cara membuat security group, lihat Persiapan.
resource-group-id
Tidak
Kelompok sumber daya tempat VNode berada.
Kelompok sumber daya adalah mekanisme untuk mengelompokkan sumber daya dalam Akun Alibaba Cloud. Setiap akun memiliki kelompok sumber daya default. Untuk informasi selengkapnya, lihat Resource Management.
Jika Anda tidak menentukan kelompok sumber daya, VNode akan bergabung ke kelompok sumber daya default.
kubeconfig
Ya
Jalur file kubeconfig yang diperlukan untuk menghubungkan VNode ke kluster. Jalur ini dihasilkan secara otomatis setelah Anda mengonfigurasi kluster. Secara default, file kubeconfig disimpan ke
~/.vnode/deploy/kubeconfig.taints
Tidak
Taint yang terikat pada VNode.
tags
Tidak
Tag yang terikat pada VNode.
Tag membantu mengelola pemisahan tagihan. Setelah Anda mengikat tag kustom ke VNode, Anda dapat memfilter biaya instans yang dibebankan ke VNode dalam analisis biaya. Untuk informasi selengkapnya, lihat Lihat tagihan terpisah berdasarkan tag.
network-type
Tidak
Jenis jaringan yang digunakan VNodectl untuk mengakses endpoint layanan kontrol ECI.
Biarkan field ini kosong untuk menggunakan endpoint Internet.
Jika VNodectl dijalankan di VPC, atur field ini ke
vpcuntuk menggunakan endpoint VPC.
Arahkan konfigurasi ke file
~/.vnode/configdan konfigurasikan field-field tersebut.vnode config default > ~/.vnode/config vim ~/.vnode/configUbah file
~/.vnode/configsesuai kebutuhan Anda. Contoh berikut hanya menampilkan field wajib.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: defaultVerifikasi konfigurasi yang dibaca VNode saat runtime.
vnode configAlihkan konteks agar VNode memuat konfigurasi dalam konteks tersebut.
vnode config set-context <context-name>
Buat VNode
Buat VNode.
vnode createCatatanVNode dibuat menggunakan konfigurasi dalam file
~/.vnode/config. Anda dapat menambahkan parameter untuk mengonfigurasi customResources, clusterDNS, dan clusterDomain. Untuk informasi selengkapnya, lihat Kelola VNode.Output contoh berikut akan muncul. Nilai VirtualNodeId adalah ID VNode baru.
{"RequestId":"AB772F9D-2FEF-5BFD-AAFB-DA3444851F29","VirtualNodeId":"vnd-7xvetkyase7gb62u****"}Lihat status VNode.
vnode listOutput contoh berikut akan muncul. Jika STATUS adalah Ready, VNode berhasil dibuat.
VNODE ID VNODE NAME CREATED STATUS SCHEDULABLE ZONES vnd-7xvetkyase7gb62u**** vnode-cn-guangzhou-a-7xvetkyase7gb62u**** 2 minutes ago Ready cn-guangzhou-aLihat informasi node.
kubectl get nodeOutput contoh berikut akan muncul. Ini menunjukkan bahwa VNode terhubung ke kluster.
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 DaemonSet dijadwalkan ke VNode
DaemonSet tidak dapat dijalankan di VNode karena VNode bukan node nyata. Setelah membuat VNode, Anda perlu memodifikasi DaemonSet di kube-proxy dan mengonfigurasi nodeAffinity untuk mencegah DaemonSet dijadwalkan ke VNode.
Modifikasi konfigurasi DaemonSet.
kubectl -n kube-system edit ds kube-proxyKonfigurasi 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. Dengan demikian, Anda dapat menjalankan Pod sebagai instans container elastis di VNode.
Penjadwalan manual
Anda dapat mengonfigurasi parameter nodeSelector dan tolerations atau menentukan parameter nodeName untuk menjadwalkan Pod ke VNode. Untuk informasi selengkapnya, lihat Jadwalkan Pod ke VNode.
Penjadwalan Otomatis
Setelah men-deploy 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 selengkapnya, lihat Gunakan eci-profile untuk menjadwalkan Pod ke VNode.