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:
| 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 |
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 | |
ARM64 | ||
Linux | AMD64 | |
ARM64 | ||
Windows | AMD64 | |
ARM64 |
Kami merekomendasikan agar Anda menginstal VNodectl pada node Master cluster Kubernetes Anda. Untuk menginstal VNodectl, ikuti langkah-langkah berikut:
Hubungkan ke cluster Kubernetes Anda.
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.gzEkstrak file paket VNodectl yang telah diunduh.
tar xvf vnodectl.tar.gzSalin file paket yang diekstraksi ke direktori tertentu.
cp vnodectl /usr/local/bin/vnode
Anda dapat menambahkan
--dryke perintah vnode untuk verifikasi klien.Jika terjadi kesalahan kompatibilitas versi API saat menjalankan perintah vnode, tambahkan
--kubernetes-versionuntuk 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.
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
Hasilkan sertifikat kubeconfig.
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 apiserverdan dapatkan nilai dari--client-ca-filedari 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
Terapkan komponen vnode-approver.
vnode addon enable vnode-approverKonfigurasikan 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
Validasi apakah VNode dapat diterapkan di cluster.
vnode cluster validateOutput perintah berikut dikembalikan. Secara default, sertifikat kubeconfig disimpan di
~/.vnode/deploy/kubeconfig.kubeconfig can't be empty
ServiceAccount
Hasilkan sertifikat kubeconfig.
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 apiserverdan dapatkan nilai dari--client-ca-filedari 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
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
Validasi apakah VNode dapat diterapkan di cluster.
vnode cluster validateOutput 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.
Jalankan informasi konfigurasi yang diperlukan agar VNode dapat berjalan.
vnode config defaultTabel 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.
Arahkan ulang informasi konfigurasi ke file
~/.vnode/configdan konfigurasikan parameter dalam file tersebut.vnode config default > ~/.vnode/config vim ~/.vnode/configUbah isi file
~/.vnode/configsesuai 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: defaultVerifikasi informasi konfigurasi yang dibaca oleh VNode saat berjalan.
vnode configPindahkan konteks untuk memungkinkan VNode memuat konfigurasi dalam konteks saat berjalan.
vnode config set-context <context-name>
Buat VNode
Buat VNode.
vnode createCatatanVNode 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****"}Lihat status VNode.
vnode listContoh 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-aLihat informasi tentang node.
kubectl get nodeContoh 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.
Modifikasi konfigurasi DaemonSet.
kubectl -n kube-system edit ds kube-proxyKonfigurasikan 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.