Jika bisnis Anda beroperasi pada pusat data atau kluster Kubernetes cloud publik pihak ketiga, Anda dapat menggunakan Distributed Cloud Container Platform for Kubernetes (ACK One) untuk membangun sistem redundansi zona dalam lingkungan hybrid cloud atau lintas cloud. Pengaturan ini memungkinkan failover otomatis dan mulus selama bencana. Topik ini menjelaskan cara menggunakan ACK One untuk dengan cepat membangun sistem redundansi zona aktif dalam lingkungan hybrid cloud.
Arsitektur
Gambar di atas menunjukkan arsitektur sistem redundansi zona aktif dalam lingkungan hybrid cloud. Sistem ini terdiri dari kluster terdaftar, instance Fleet (GitOps opsional), dan gateway multi-cluster Application Load Balancer (ALB).
Sumber daya di Alibaba Cloud ditempatkan dalam virtual private cloud (VPC) yang sama. Kluster Container Service for Kubernetes (ACK) dibuat di AZ 1 dan kluster terdaftar dibuat di AZ 2.
Hubungkan kluster Kubernetes yang diterapkan di pusat data atau platform pihak ketiga ke kluster terdaftar. Gunakan saluran sewa untuk menghubungkan pusat data ke VPC.
Asosiasikan kluster ACK dan kluster terdaftar dengan instance Fleet di VPC yang sama. Gunakan ACK One GitOps untuk mendistribusikan aplikasi ke kluster ACK dan kluster terdaftar.
Pada instance Fleet, konfigurasikan AlbConfig untuk membuat gateway multi-cluster ALB dan tambahkan kluster ke gateway. Kemudian, buat Ingress dan konfigurasikan aturan routing lalu lintas pada instance Fleet untuk mengelola lalu lintas Utara-Selatan dan menerapkan pemulihan bencana zona.
Prosedur
Langkah 1: Rancang jaringan dan buat kluster
Buat instance Fleet, kluster ACK, dan kluster terdaftar di VPC yang sama. Pastikan bahwa kluster ACK dan kluster terdaftar berada di zona yang berbeda.
Pastikan blok CIDR node dan pod dari kluster ACK tidak tumpang tindih dengan kluster Kubernetes. Untuk informasi lebih lanjut tentang desain jaringan untuk manajemen Fleet, lihat Desain jaringan untuk manajemen Fleet.
Langkah 2: Hubungkan ke Alibaba Cloud
Hubungkan kluster Kubernetes ke kluster terdaftar. Untuk informasi lebih lanjut, lihat Buat kluster terdaftar ACK One.
CatatanUntuk menggunakan kluster terdaftar guna memigrasikan beban kerja ke Alibaba Cloud dengan sumber daya elastis, lihat Bangun kluster hybrid cloud dan tambahkan Instance ECS ke kluster dan Jadwalkan pod untuk berjalan pada instance container elastis melalui node virtual.
Untuk menahan lonjakan lalu lintas tak terduga, Anda dapat mengonfigurasi pengaturan ketersediaan tinggi untuk instance container elastis. Untuk informasi lebih lanjut, lihat Buat ECI lintas zona.
Hubungkan jaringan lokal ke VPC. Untuk informasi lebih lanjut, lihat Konektivitas jaringan.
Gunakan saluran sewa untuk menghubungkan ke Alibaba Cloud. Untuk informasi lebih lanjut, lihat Ikhtisar jaringan hybrid.
Untuk informasi lebih lanjut tentang cara mengasosiasikan kluster terdaftar dan kluster ACK dengan instance Fleet, lihat Kelola kluster terkait.
Langkah 3: Gunakan GitOps ApplicationSet untuk mendistribusikan aplikasi ke beberapa kluster
Dalam lingkungan hybrid cloud, Anda harus memastikan jaringan kontainer mana yang digunakan oleh kluster Kubernetes: underlay atau overlay. Perbedaan antara kedua jaringan kontainer tersebut adalah Anda harus menghubungkan jaringan lokal ke VPC jika ingin mengakses pod di jaringan overlay. Selain itu, Anda harus memastikan bahwa setiap node dapat merutekan lalu lintas ke blok CIDR pod di jaringan lokal. Gateway multi-cluster ALB mendukung kedua jaringan kontainer. Anda dapat menggunakan ClusterIP Services di jaringan underlay tetapi harus menggunakan NodePort Services di jaringan overlay.
Contoh berikut menunjukkan template YAML dari GitOps ApplicationSet bernama web-demo untuk jaringan underlay dan overlay. Untuk informasi lebih lanjut tentang ApplicationSets, lihat Buat aplikasi multi-kluster.
Jaringan kontainer Underlay
Gunakan template YAML berikut untuk menerapkan ApplicationSet web-demo. ClusterIP Services digunakan di semua kluster terkait.
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: appset-web-demo-undelay
namespace: argocd
spec:
template:
metadata:
name: '{{.metadata.annotations.cluster_id}}-web-demo'
namespace: argocd
spec:
destination:
name: '{{.name}}'
namespace: gateway-demo
project: default
source:
repoURL: https://github.com/AliyunContainerService/gitops-demo.git
path: manifests/helm/web-demo
targetRevision: main
helm:
valueFiles:
- values.yaml
parameters:
- name: envCluster
value: '{{.metadata.annotations.cluster_name}}'
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
generators:
- clusters:
selector:
matchExpressions:
- values:
- cluster
key: argocd.argoproj.io/secret-type
operator: In
- values:
- in-cluster
key: name
operator: NotIn
goTemplateOptions:
- missingkey=error
syncPolicy:
preserveResourcesOnDeletion: false
goTemplate: trueJaringan kontainer Overlay
Akses UI ArgoCD, pilih , dan tambahkan label
cluster: ackdancluster: idcke dua kluster.Gunakan template YAML berikut untuk menerapkan ApplicationSet web-demo di dua kluster. Gunakan NodePort Services di pusat data dan gunakan ClusterIP Services di kluster ACK.
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: appset-web-demo-overlay
namespace: argocd
spec:
template:
metadata:
name: '{{.metadata.annotations.cluster_id}}-web-demo-overlay'
namespace: argocd
spec:
destination:
name: '{{.name}}'
namespace: gateway-demo
project: default
source:
repoURL: https://github.com/AliyunContainerService/gitops-demo.git
path: manifests/helm/web-demo
targetRevision: main
helm:
valueFiles:
- values.yaml
parameters:
- name: isNodePort
value: "{{.values.isNodePort}}"
- name: envCluster
value: '{{.metadata.annotations.cluster_name}}'
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
generators:
- clusters:
selector:
matchLabels:
cluster: 'idc'
# Peta nilai-kunci untuk parameter arbitrer
values:
isNodePort: "true"
- clusters:
selector:
matchLabels:
cluster: 'ack'
values:
isNodePort: "false"
goTemplateOptions:
- missingkey=error
syncPolicy:
preserveResourcesOnDeletion: false
goTemplate: trueLangkah 4: Gunakan gateway multi-cluster ALB untuk mengimplementasikan redundansi zona aktif
Konfigurasikan AlbConfig pada instance Fleet untuk membuat gateway multi-cluster ALB, dan tambahkan kluster ACK dan kluster terdaftar ke gateway.
Buat aturan routing dan Ingress pada instance Fleet untuk mengimplementasikan redundansi zona aktif.
Untuk informasi lebih lanjut, lihat Bangun sistem pemulihan bencana zona.