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:
| 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 |
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.
Jika Anda menggunakan sertifikat admin, lewati bagian ini.
Hubungkan ke kluster Kubernetes Anda.
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 -- bootstrapServiceAccount
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 -- commonLihat isi kubeconfig.
Kubeconfig yang dihasilkan bernama vnode-config. Jalankan perintah berikut untuk melihat isi kubeconfig:
cat vnode-configSaat 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-datakosong, 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
Masuk ke Konsol Elastic Container Instance.
Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, klik Virtual Node.
Klik Create Virtual Node.
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:

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 headersPesan 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 ditemukanPesan 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.
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.
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 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.