Kluster hibrida menghubungkan kluster Kubernetes yang dikelola sendiri di lingkungan on-premises Anda ke Alibaba Cloud melalui kluster terdaftar. Konfigurasi ini memungkinkan Anda melakukan penskalaan kluster Kubernetes yang dikelola sendiri dengan node komputasi berbasis cloud serta mengelola resource on-premises dan cloud secara bersamaan. Topik ini menggunakan contoh kluster Kubernetes yang dikelola sendiri di pusat data yang menggunakan plugin jaringan kontainer Calico untuk menunjukkan cara membuat kluster hibrida.
Prasyarat
-
Jaringan kluster Kubernetes yang dikelola sendiri di on-premises dan virtual private cloud (VPC) yang digunakan oleh kluster terdaftar harus saling terhubung, mencakup konektivitas antara jaringan node komputasi maupun jaringan kontainer. Anda dapat menggunakan Cloud Enterprise Network (CEN) untuk membuat koneksi tersebut. Untuk informasi selengkapnya, lihat Buat koneksi multi-VPC dalam berbagai skenario.
-
Kluster tujuan harus menggunakan konfigurasi agen impor kluster privat yang disediakan oleh kluster terdaftar untuk terhubung dengannya.
-
Node komputasi berbasis cloud yang ditambahkan melalui kluster terdaftar harus dapat mengakses API Server kluster Kubernetes yang dikelola sendiri di on-premises Anda.
-
Anda telah terhubung ke kluster terdaftar menggunakan kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
Arsitektur kluster kontainer elastis hibrida
Kluster Kubernetes yang dikelola sendiri umumnya menggunakan Calico untuk routing. Topik ini menggunakan contoh kluster yang dikelola sendiri di pusat data yang menggunakan mode route reflector Calico. Untuk lingkungan cloud, gunakan plugin jaringan yang dikustomisasi untuk platform cloud tertentu. Alibaba Cloud Container Service for Kubernetes (ACK) menggunakan plugin Terway untuk mengelola jaringan kontainer. Gambar berikut menunjukkan topologi jaringan kluster hibrida.
Di pusat data Anda, blok CIDR pribadi adalah 192.168.0.0/24 dan blok CIDR jaringan kontainer adalah 10.100.0.0/16. Plugin jaringan Calico menggunakan mode route reflector. Di sisi cloud, blok CIDR VPC adalah 10.0.0.0/8. Blok CIDR virtual switch untuk node komputasi adalah 10.10.24.0/24, dan blok CIDR virtual switch untuk Pod adalah 10.10.25.0/24. Komponen jaringan Terway menggunakan mode bersama.
Buat kluster kontainer hibrida menggunakan kluster ACK terdaftar
-
Konfigurasikan plugin jaringan kontainer on-premises dan berbasis cloud.
Pada kluster hibrida, pastikan plugin Calico on-premises hanya berjalan di lingkungan on-premises dan komponen Terway berbasis cloud hanya berjalan di cloud.
Node Elastic Compute Service (ECS) berbasis cloud yang ditambahkan ke kluster ACK terdaftar secara otomatis diberi label alibabacloud.com/external=true. Untuk memastikan Pod Calico di pusat data hanya berjalan di on-premises, konfigurasikan NodeAffinity untuk Pod tersebut. Contoh berikut menunjukkan cara melakukannya:
cat <<EOF > calico-ds.patch spec: template: spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: alibabacloud.com/external operator: NotIn values: - "true" - key: type operator: NotIn values: - "virtual-kubelet" EOF kubectl -n kube-system patch ds calico-node -p "$(cat calico-ds.patch)" -
Konfigurasikan izin RAM untuk plugin Terway.
Konfigurasikan menggunakan onectl
-
Instal dan konfigurasikan onectl di mesin lokal Anda. Untuk informasi selengkapnya, lihat Kelola kluster terdaftar menggunakan onectl.
-
Jalankan perintah berikut untuk mengonfigurasi izin RAM untuk plugin Terway.
onectl ram-user grant --addon terway-eniipOutput yang diharapkan:
Ram policy ack-one-registered-cluster-policy-terway-eniip granted to ram user ack-one-user-ce313528c3 successfully.
Konfigurasikan di Konsol
Konfigurasikan izin Resource Access Management (RAM) yang diperlukan untuk informasi AccessKey komponen jaringan Terway. Dokumen kebijakan berikut mencantumkan izin yang diperlukan. Untuk informasi selengkapnya, lihat Kelola izin pengguna RAM.
{ "Version": "1", "Statement": [ { "Action": [ "ecs:CreateNetworkInterface", "ecs:DescribeNetworkInterfaces", "ecs:AttachNetworkInterface", "ecs:DetachNetworkInterface", "ecs:DeleteNetworkInterface", "ecs:DescribeInstanceAttribute", "ecs:AssignPrivateIpAddresses", "ecs:UnassignPrivateIpAddresses", "ecs:DescribeInstances", "ecs:ModifyNetworkInterfaceAttribute" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "vpc:DescribeVSwitches" ], "Resource": [ "*" ], "Effect": "Allow" } ] } -
-
Instal plugin Terway.
Instal menggunakan onectl
Jalankan perintah berikut untuk menginstal plugin Terway.
onectl addon install terway-eniipOutput yang diharapkan:
Addon terway-eniip, version **** installed.Instal di Konsol
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Add-ons.
-
Pada halaman Add-ons, cari komponen terway-eniip. Di pojok kanan bawah kartu komponen, klik Install, lalu klik OK.
-
Jalankan perintah berikut untuk melihat DaemonSet komponen jaringan Terway.
-
Setelah terhubung ke kluster menggunakan kubectl, jalankan perintah berikut di kluster terdaftar untuk melihat DaemonSet komponen jaringan Terway.
Sebelum melakukan penskalaan kluster hibrida dengan node berbasis cloud, Terway tidak dijadwalkan pada node on-premises mana pun.
kubectl -nkube-system get ds |grep terwayOutput yang diharapkan:
terway-eniip 0 0 0 0 0 alibabacloud.com/external=true 16sOutput yang diharapkan menunjukkan bahwa Pod Terway hanya berjalan pada node ECS berbasis cloud yang diberi label alibabacloud.com/external=true.
-
Jalankan perintah berikut untuk mengedit ConfigMap
eni-configdan konfigurasikan eni_conf.access_key dan eni_conf.access_secret.kubectl -n kube-system edit cm eni-configContoh berikut menunjukkan konfigurasi
eni-config:kind: ConfigMap apiVersion: v1 metadata: name: eni-config namespace: kube-system data: eni_conf: | { "version": "1", "max_pool_size": 5, "min_pool_size": 0, "vswitches": {"AZoneID":["VswitchId"]}, "eni_tags": {"ack.aliyun.com":"{{.ClusterID}}"}, "service_cidr": "{{.ServiceCIDR}}", "security_group": "{{.SecurityGroupId}}", "access_key": "", "access_secret": "", "vswitch_selection_policy": "ordered" } 10-terway.conf: | { "cniVersion": "0.3.0", "name": "terway", "type": "terway" } -
Konfigurasikan skrip inisialisasi node kustom.
-
Modifikasi skrip inisialisasi node asli kluster Kubernetes yang dikelola sendiri.
Contoh ini menggunakan kluster Kubernetes yang dikelola sendiri di pusat data yang diinisialisasi dengan tool kubeadm. Contoh berikut menunjukkan skrip inisialisasi asli, `init-node.sh`, yang menambahkan node baru ke kluster di pusat data.
Skrip inisialisasi node kustom yang diperlukan oleh kluster ACK terdaftar, `init-node-ecs.sh`, didasarkan pada skrip `init-node.sh`. Skrip ini menerima dan mengonfigurasi variabel lingkungan ALIBABA_CLOUD_PROVIDER_ID, ALIBABA_CLOUD_NODE_NAME, ALIBABA_CLOUD_LABELS, dan ALIBABA_CLOUD_TAINTS yang dikirimkan dari kluster terdaftar. Contoh berikut menunjukkan skrip `init-node-ecs.sh`.
-
Simpan dan konfigurasikan skrip kustom.
Simpan skrip kustom di server file HTTP, misalnya di bucket Object Storage Service (OSS). Contoh berikut menunjukkan URL sampel:
https://kubelet-****.oss-cn-hangzhou-internal.aliyuncs.com/init-node-ecs.sh.Atur bidang addNodeScriptPath ke path skrip penambahan node kustom
https://kubelet-****.oss-cn-hangzhou-internal.aliyuncs.com/init-node-ecs.shdan simpan konfigurasinya. Contoh berikut menunjukkan cara melakukannya:apiVersion: v1 data: addNodeScriptPath: https://kubelet-****.oss-cn-hangzhou-internal.aliyuncs.com/init-node-ecs.sh kind: ConfigMap metadata: name: ack-agent-config namespace: kube-system
Setelah menyelesaikan konfigurasi ini, Anda dapat membuat kelompok node dan melakukan penskalaan node ECS di kluster ACK terdaftar tujuan.
-
-
Buat kelompok node dan lakukan penskalaan node ECS.
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
-
Pada halaman Node Pools, buat kelompok node dan lakukan penskalaan node sesuai kebutuhan. Untuk informasi selengkapnya, lihat Buat dan kelola kelompok node.
Referensi
Rencanakan jaringan kontainer untuk skenario Terway. Untuk informasi selengkapnya, lihat Perencanaan jaringan untuk kluster ACK yang dikelola.
Hubungkan jaringan kluster Kubernetes di pusat data ke VPC di cloud. Untuk informasi selengkapnya, lihat Fitur.
Buat kluster terdaftar dan hubungkan ke kluster Kubernetes yang dikelola sendiri di pusat data. Untuk informasi selengkapnya, lihat Buat kluster terdaftar ACK One.