ACK One menggunakan kebijakan propagasi dan kebijakan override untuk mendistribusikan aplikasi dalam suatu Armada. Kebijakan propagasi (PropagationPolicy) menentukan resource mana yang didistribusikan ke kluster mana, sedangkan kebijakan override (OverridePolicy) menentukan konfigurasi spesifik kluster untuk resource tersebut. Topik ini menjelaskan cara mengonfigurasi kebijakan propagasi dan override.
Kebijakan propagasi
Anda dapat mendefinisikan PropagationPolicy atau ClusterPropagationPolicy untuk mengonfigurasi kebijakan propagasi guna mendistribusikan aplikasi ke beberapa kluster. Kedua kebijakan tersebut—PropagationPolicy dan ClusterPropagationPolicy—didasarkan pada proyek sumber terbuka Karmada serta kompatibel dengan antarmuka ClusterPropagationPolicy dan PropagationPolicy dari Karmada.
ClusterPropagationPolicy: Digunakan untuk mendistribusikan aplikasi tingkat kluster, sepertiPersistentVolume,StorageClass,Namespace, danCustomResourceDefinition. Kebijakan ini juga mendukung distribusi aplikasi di namespace apa pun, kecuali namespace sistem. Izin Role-based Access Control (RBAC) untuk distribusi resource dikendalikan oleh izin RBAC Armada multi-kluster.PropagationPolicy: Digunakan untuk mendistribusikan aplikasi tingkat namespace. Kebijakan ini hanya dapat mendistribusikan aplikasi di namespace-nya sendiri.
Contoh berikut menunjukkan PropagationPolicy yang mendistribusikan aplikasi berdasarkan bobot statis dan menjelaskan parameter yang digunakan untuk menentukan kebijakan tersebut.
apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: PropagationPolicy
metadata:
name: web-demo
namespace: demo
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: web-demo
- apiVersion: v1
kind: ConfigMap
name: cm-demo
- apiVersion: apps/v1
kind: Deployment
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- xxxx
preserveResourcesOnDeletion: true
placement:
clusterAffinity:
clusterNames:
- cxxxxx # ID kluster Anda.
- cxxxxx # ID kluster Anda.
replicaScheduling:
replicaSchedulingType: Divided
replicaDivisionPreference: Weighted
weightPreference:
staticWeightList:
- targetCluster:
clusterNames:
- cxxxxx
weight: 2
- targetCluster:
clusterNames:
- cxxxxxx
weight: 1Parameter
Parameter | Wajib | Deskripsi | Contoh |
apiVersion | Ya | Versi API. | Diatur ke |
kind | Ya | Tingkat kebijakan propagasi. Nilai yang valid:
| PropagationPolicy |
namespace | Tidak | Jika | demo |
name | Tidak | Nama kebijakan propagasi. | policy-xxxx |
resourceSelectors | Tidak | Memilih satu atau beberapa resource Kubernetes untuk didistribusikan. Untuk informasi selengkapnya, lihat parameter resourceSelector. | |
propagateDeps | Tidak | Menentukan apakah resource dependen harus didistribusikan secara otomatis. Misalnya, jika sebuah deployment mereferensikan ConfigMap, parameter ini menentukan apakah ConfigMap tersebut juga didistribusikan ke kluster anggota. | true atau false |
placement | Ya |
| |
dependentOverrides | Tidak | Menentukan Resource hanya didistribusikan setelah semua objek | |
failover | Tidak | Perilaku
| |
preserveResourcesOnDeletion | Ya | Menentukan apakah resource yang telah didistribusikan tetap dipertahankan setelah kebijakan dihapus. Default: true. | false |
Parameter resourceSelector
Parameter | Wajib | Deskripsi | Contoh |
apiVersion | Ya | Versi API dari resource yang didistribusikan. | v1 |
kind | Ya | Jenis resource yang didistribusikan. | Deployment |
namespace | Tidak | Namespace dari resource yang didistribusikan. Catatan Jika Anda menggunakan | demo |
name | Tidak | Nama resource yang didistribusikan. | Nama apa saja |
labelSelector | Tidak | Memilih resource menggunakan pemilih label.
| |
Parameter clusterAffinity
Parameter | Wajib | Deskripsi | Nilai contoh |
clusterNames | Tidak | Daftar ID kluster tempat resource akan didistribusikan. | |
excludeClusters | Tidak | Daftar ID kluster yang dikecualikan dari distribusi. | |
labelSelector | Tidak | Memilih kluster untuk distribusi menggunakan pemilih label. | |
Parameter replicaScheduling
Parameter | Wajib | Deskripsi | Nilai contoh |
replicaSchedulingType | Tidak | Kebijakan penjadwalan replika. Nilai yang valid:
| Duplicated |
customSchedulingType | Tidak | Kebijakan penjadwalan kustom. Saat ini hanya mendukung penjadwalan Gang untuk beban kerja Pekerjaan. | Gang |
replicaDivisionPreference | Tidak | Kebijakan pembagian replika. Nilai yang valid:
| weighted |
weightPreference | Tidak | Menentukan preferensi untuk bobot dinamis atau statis.
| Pada contoh berikut, Cluster1 memiliki bobot 2 dan Cluster2 memiliki bobot 1. Jika jumlah total replika adalah 3, dua replika dijadwalkan ke Cluster1 dan satu replika dijadwalkan ke Cluster2. Contoh berikut menunjukkan penjadwalan bobot dinamis: |
Kebijakan Terdiferensiasi
Saat menerapkan aplikasi, konfigurasi yang berbeda mungkin diperlukan di setiap kluster. Kebijakan override memungkinkan Anda menerapkan aplikasi dengan konfigurasi spesifik kluster. Anda dapat menentukan ClusterOverridePolicy atau OverridePolicy untuk membuat kebijakan override. ClusterOverridePolicy dan OverridePolicy didasarkan pada proyek open source Karmada serta kompatibel dengan ClusterOverridePolicy milik Karmada.
Mendukung antarmuka OverridePolicy.
ClusterOverridePolicy: Digunakan untuk meng-override resource tingkat kluster, sepertiPersistentVolume,StorageClass,Namespace, danCustomResourceDefinition. Kebijakan ini juga mendukung peng-override resource di namespace apa pun, kecuali namespace sistem.OverridePolicy: Digunakan untuk meng-override resource tingkat namespace. Kebijakan ini dapat meng-override resource yang didistribusikan di namespace-nya sendiri.
Contoh berikut menunjukkan OverridePolicy dan menjelaskan parameter yang digunakan untuk menentukan kebijakan tersebut.
apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: OverridePolicy
metadata:
name: demo
namespace: demo
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
name: example
overrideRules:
- targetCluster:
clusterNames:
- cxxxxx #ID kluster Anda
overriders:
plaintext:
- operator: replace
path: /spec/replicas
value: 1
imageOverrider:
- component: Registry
operator: add
value: registry.cn-hangzhou.aliyuncs.com/xxxxParameter utama
Parameter | Wajib | Deskripsi | Contoh |
apiVersion | Ya | Versi API. | Diatur ke |
kind | Ya | Jenis kebijakan override. Nilai yang valid:
| OverridePolicy |
namespace | Tidak | Jika | demo |
name | Ya | Nama kebijakan terdiferensiasi. | Nama apa saja |
resourceSelectors | Ya | Array dari resourceSelectors. Untuk informasi selengkapnya, lihat parameter resourceSelector. | |
overrideRules | Ya | Array dari ruleWithClusters. Untuk informasi selengkapnya, lihat parameter ruleWithCluster. | |
Parameter resourceSelector
Parameter | Wajib | Deskripsi | Contoh |
apiVersion | Ya | Pilih | v1 |
kind | Ya | Jenis resource yang didistribusikan. | Deployment |
namespace | Tidak | Namespace dari resource yang didistribusikan. Catatan Jika Anda menggunakan | demo |
name | Tidak | Nama resource yang didistribusikan. | Nama apa saja |
labelSelector | Tidak | Memilih resource untuk distribusi menggunakan pemilih label. | |
Parameter clusterAffinity
Parameter | Wajib | Deskripsi | Nilai contoh |
clusterNames | Tidak | Daftar ID kluster tempat resource akan didistribusikan. | |
excludeClusters | Tidak | Daftar ID kluster yang dikecualikan dari distribusi. | |
labelSelector | Tidak | Memilih kluster untuk distribusi menggunakan pemilih label. | |
Parameter ruleWithCluster
Parameter | Wajib | Deskripsi | Contoh |
targetCluster | Ya | Memilih kluster menggunakan parameter | |
overriders | Ya | Array dari struct
| |
Parameter overriders
Parameter | Wajib | Deskripsi | Contoh |
imageOverrider | Tidak | Menentukan cara memodifikasi image.
| |
plaintext | Tidak | Memodifikasi resource menggunakan JSON Patch.
| |
Referensi
Untuk informasi selengkapnya tentang cara membuat aplikasi dalam instans Armada dan mengonfigurasi kebijakan propagasi atau override untuk distribusi multi-kluster, lihat Panduan cepat distribusi aplikasi.