Menyebarkan aplikasi di beberapa kluster melibatkan tugas berulang yang rentan terhadap kesalahan dan menyulitkan sinkronisasi. Anda dapat menggunakan antarmuka baris perintah AMC untuk menyebarkan aplikasi dengan cepat ke beberapa kluster, sehingga memungkinkan manajemen terpadu dan sinkronisasi otomatis untuk pembaruan di masa mendatang.
Cara kerja

Pengguna menjalankan perintah
kubectl amc promoteuntuk menyinkronkan sumber daya yang dipilih dari sebuah kluster ke armada.Sumber daya dibuat di armada, dan PropagationPolicy secara otomatis dihasilkan. Kebijakan tersebut mencakup kluster yang ditentukan oleh
target-clustersserta kluster sumber, yaitu cluster-1.Armada mendistribusikan sumber daya ke kluster yang ditentukan dalam
target-clusters, seperti cluster-2 pada diagram. Sumber daya yang telah disinkronkan di semua kluster target, termasuk cluster-1, kemudian dikelola oleh armada.
Prasyarat
Beberapa kluster telah dikaitkan dengan armada. Untuk informasi selengkapnya, lihat Kelola kluster yang dikaitkan.
Izin AliyunAdcpFullAccess telah diberikan kepada Pengguna Resource Access Management (RAM). Untuk informasi selengkapnya, lihat Berikan izin kepada Pengguna RAM.
Dapatkan file kubeconfig untuk instans armada dari Konsol ACK One dan hubungkan ke armada menggunakan
kubectl.
Langkah 1: Buat namespace di armada dan kluster target
Sebelum mendistribusikan sumber daya ke beberapa kluster, pastikan namespace yang sesuai sudah ada di armada dan semua kluster target. Jika tidak, distribusi akan gagal. Pada contoh berikut, sumber daya yang akan didistribusikan berada dalam namespace gateway-demo.
Jika namespace tersebut sudah ada di armada dan semua kluster target, Anda dapat melewati langkah ini.
Gunakan kubeconfig armada untuk menjalankan perintah berikut dan buat namespace
gateway-demodi armada.kubectl create ns gateway-demoSalin dan simpan konten YAML berikut ke dalam file bernama
web-demo-ns-policy.yaml.apiVersion: policy.one.alibabacloud.com/v1alpha1 kind: ClusterPropagationPolicy metadata: name: web-demo-ns-policy spec: resourceSelectors: - apiVersion: v1 kind: Namespace name: gateway-demo placement: clusterAffinity: clusterNames: - ${cluster1_id} # Ganti dengan ID kluster Anda - ${cluster2_id} # Ganti dengan ID kluster Anda replicaScheduling: replicaSchedulingType: DuplicatedGunakan kubeconfig armada untuk menjalankan perintah berikut. Ini akan membuat
ClusterPropagationPolicydi armada dan mendistribusikan namespace tersebut.kubectl apply -f web-demo-ns-policy.yaml
Langkah 2: Jalankan perintah promote untuk menyinkronkan sumber daya ke armada
Gunakan perintah kubectl amc promote untuk menyinkronkan sumber daya kluster tunggal ke armada dan mendistribusikannya ke beberapa kluster.
Gunakan perintah
amc getuntuk memeriksa status awal. Keluaran menunjukkan bahwaservice1danweb-demohanya ada di namespacegateway-demopada cluster-1. NilaiADOPTIONadalah `N`, yang menunjukkan bahwa sumber daya tersebut tidak dikelola oleh PropagationPolicy di armada ACK One.kubectl amc -ngateway-demo get svc -M kubectl amc -ngateway-demo get deployment -MKeluaran yang diharapkan:
NAME CLUSTER CLUSTER_ALIAS TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ADOPTION service1 c8xxxxxx cluster-1 ClusterIP 192.168.**.** <none> 80/TCP 104m N NAME CLUSTER CLUSTER_ALIAS READY UP-TO-DATE AVAILABLE AGE ADOPTION web-demo c8xxxxxx cluster-1 2/2 2 2 104m NJalankan perintah berikut untuk menempatkan sumber daya dari cluster-1 di bawah pengelolaan armada dan mendistribusikannya ke kluster lain.
Ganti parameter
${cluster1_id}dan${cluster2_id}dengan ID kluster Anda. Parametertarget-clustersmenentukan kluster tempat sumber daya yang dipromosikan akan didistribusikan. Untuk menentukan beberapa kluster, gunakan format${cluster2_id},${cluster3_id}.kubectl amc promote service service1 -ngateway-demo -m ${cluster1_id} --target-clusters ${cluster2_id} kubectl amc promote deployment web-demo -ngateway-demo -m ${cluster1_id} --target-clusters ${cluster2_id}Keluaran yang diharapkan:
ResourceTemplate (gateway-demo/service1) is created successfully PropagationPolicy (gateway-demo/service1-67676f499c) is created successfully Resource "/v1, Resource=services"(gateway-demo/service1) is promoted successfully ResourceTemplate (gateway-demo/web-demo) is created successfully PropagationPolicy (gateway-demo/web-demo-6675b99c65) is created successfully Resource "apps/v1, Resource=deployments"(gateway-demo/web-demo) is promoted successfullyJalankan kembali perintah
amc getuntuk melihat hasilnya. Keluaran menunjukkan bahwaservice1danweb-demotelah didistribusikan ke cluster-2 dan sumber daya di kedua kluster dikelola oleh armada ACK One (ADOPTIONbernilai Y). Aplikasi web-demo di cluster-1 kini menjadi penerapan multi-kluster.kubectl amc -ngateway-demo get svc -M kubectl amc -ngateway-demo get deployment -MKeluaran yang diharapkan:
NAME CLUSTER CLUSTER_ALIAS TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ADOPTION service1 cfxxxxxx cluster-2 ClusterIP 192.168.**.*** <none> 80/TCP 19s Y service1 c8xxxxxx cluster-1 ClusterIP 192.168.**.** <none> 80/TCP 5h58m Y NAME CLUSTER CLUSTER_ALIAS READY UP-TO-DATE AVAILABLE AGE ADOPTION web-demo c8xxxxxx cluster-1 2/2 2 2 6h1m Y web-demo cfxxxxxx cluster-2 2/2 2 2 24s Y
Ubah kebijakan distribusi default
Secara default, perintah promote secara otomatis membuat kebijakan distribusi bertipe `Duplicated` (PropagationPolicy). Hal ini mengatur replicaSchedulingType: Duplicated, yang mereplikasi aplikasi ke setiap kluster. Anda dapat menjalankan perintah berikut di armada untuk melihat kebijakan distribusi default.
kubectl get pp -ngateway-demo xx -oyamlKeluaran yang diharapkan:
apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: PropagationPolicy
metadata:
...
spec:
...
placement:
clusterAffinity:
...
replicaScheduling:
replicaSchedulingType: Duplicated # Kebijakan distribusi DuplicatedUntuk menggunakan kebijakan lain, seperti bobot replika statis atau dinamis, tambahkan parameter --auto-create-policy=false pada perintah untuk mencegah pembuatan kebijakan secara otomatis. Setelah itu, Anda dapat mengonfigurasi kebijakan yang diinginkan secara manual. Untuk informasi selengkapnya, lihat Kebijakan distribusi dan kebijakan diferensiasi.