Distributed Cloud Container Platform for Kubernetes (ACK One) Fleet instance menyebarkan aplikasi berdasarkan PropagationPolicy dan OverridePolicy. PropagationPolicy digunakan untuk menentukan sumber daya yang perlu disebarkan ke kluster tertentu. OverridePolicy digunakan untuk menentukan konfigurasi yang harus ditimpa saat sumber daya disebarkan ke kluster yang berbeda. Topik ini menjelaskan cara mengonfigurasi PropagationPolicy dan OverridePolicy.
PropagationPolicy
Anda dapat mendefinisikan PropagationPolicy dan ClusterPropagationPolicy untuk menyebarkan aplikasi multi-kluster. PropagationPolicy dan ClusterPropagationPolicy dirancang berdasarkan proyek open source Karmada dan kompatibel dengan API ClusterPropagationPolicy dan PropagationPolicy dari Karmada.
ClusterPropagationPolicy: Kebijakan ini memungkinkan Anda menyebarkan sumber daya di tingkat kluster, termasukPersistentVolume,StorageClass,Namespace, danCustomResourceDefinition. Kebijakan ini juga memungkinkan Anda menyebarkan sumber daya di namespace apa pun selain namespace yang dicadangkan oleh sistem. Untuk informasi lebih lanjut tentang izin kontrol akses berbasis peran (RBAC) yang diperlukan untuk menyebarkan sumber daya, lihat Izin RBAC pada Fleet instance.PropagationPolicy: Kebijakan ini memungkinkan Anda menyebarkan sumber daya hanya di namespace yang ditentukan oleh kebijakan.
Berikut ini, PropagationPolicy yang menyebarkan aplikasi berdasarkan bobot statis digunakan sebagai contoh untuk menjelaskan cara mengonfigurasi kebijakan penyiaran.
apiVersion: 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 | Informasi versi API. | Nilai tetapnya adalah |
kind | Ya | Jenis kebijakan. Nilai valid:
| PropagationPolicy |
namespace | Tidak | Jika Anda mengatur parameter | demo |
name | Tidak | Nama kebijakan propagasi. | policy-xxxx |
resourceSelectors | Tidak | Pilih satu atau lebih sumber daya Kubernetes yang ingin Anda sebarkan. Untuk informasi lebih lanjut, lihat resourceSelector. | |
propagateDeps | Tidak | Tentukan apakah sumber daya yang direferensikan secara otomatis disebarkan ke kluster terkait. Misalnya, ketika Deployment mereferensikan ConfigMap, parameter ini menentukan apakah ConfigMap disinkronkan ke kluster terkait. | true |
placement | Ya |
| |
dependentOverrides | Tidak | Dependensi Menunjukkan bahwa penyiaran sumber daya akan menunggu hingga semua konfigurasi | |
failover | Tidak | Perilaku
| |
preserveResourcesOnDeletion | Ya | Tentukan apakah sumber daya yang disebarkan oleh kebijakan dipertahankan saat kebijakan dihapus. Nilai default: | false |
resourceSelector
Parameter | Wajib | Deskripsi | Contoh |
apiVersion | Ya | Versi API propagasi sumber daya. | v1 |
kind | Ya | Jenis sumber daya yang akan disebarkan. | Deployment |
namespace | Tidak | Namespace sumber daya yang disebarkan. Catatan Jika Anda menggunakan | demo |
name | Tidak | Nama sumber daya yang disebarkan. | Nama apa saja |
labelSelector | Tidak | Pilih sumber daya yang akan disebarkan menggunakan pemilih label.
| |
clusterAffinity
Parameter | Wajib | Deskripsi | Contoh |
clusterNames | Tidak | ID kluster ke mana Anda ingin menyebarkan sumber daya. | |
excludeClusters | Tidak | ID kluster yang ingin Anda kecualikan. | |
labelSelector | Tidak | Pilih kluster menggunakan pemilih label. | |
replicaScheduling
Parameter | Wajib | Deskripsi | Contoh |
replicaSchedulingType | Tidak | Kebijakan penjadwalan pod. Nilai valid:
| Duplicated |
customSchedulingType | Tidak | Strategi penjadwalan kustom. Hanya Gang scheduling yang didukung untuk beban kerja. | Gang |
replicaDivisionPreference | Tidak | Tentukan bagaimana pod dibagi di antara kluster:
| weighted |
weightPreference | Tidak | Tentukan apakah menggunakan pembobotan dinamis atau statis untuk penyiaran pod:
|
|
OverridePolicy
Selama penyiaran aplikasi, beberapa kluster mungkin memerlukan konfigurasi yang berbeda. OverridePolicy dapat digunakan untuk menimpa sumber daya yang disebarkan ke kluster yang berbeda. Anda dapat mendefinisikan ClusterOverridePolicy dan OverridePolicy. ClusterOverridePolicy dan OverridePolicy dirancang berdasarkan proyek open source Karmada dan kompatibel dengan API ClusterOverridePolicy
dan OverridePolicy dari Karmada.
ClusterOverridePolicy: Kebijakan ini memungkinkan Anda menimpa sumber daya di tingkat kluster, termasukPersistentVolume,StorageClass,Namespace, danCustomResourceDefinition. Anda juga dapat menimpa sumber daya di namespace apa pun selain namespace yang dicadangkan oleh sistem.OverridePolicy: Kebijakan ini memungkinkan Anda menimpa sumber daya di tingkat namespace. Anda dapat menimpa sumber daya hanya di namespace yang ditentukan oleh kebijakan.
Berikut ini, OverridePolicy digunakan sebagai contoh untuk menjelaskan cara mengonfigurasi kebijakan penimpaan.
apiVersion: 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
Parameter | Wajib | Deskripsi | Contoh |
apiVersion | Ya | Informasi versi API. | Nilai tetapnya adalah |
kind | Ya | Jenis kebijakan penimpaan. Nilai valid:
| OverridePolicy |
namespace | Tidak | Jika Anda mengatur parameter | demo |
name | Ya | Nama kebijakan penimpaan. | Nama apa saja |
resourceSelectors | Ya | Array resourceSelector. Untuk informasi lebih lanjut, lihat resourceSelector. | |
overrideRules | Ya | Array ruleWithCluster. Untuk informasi lebih lanjut, lihat ruleWithCluster. | |
resourceSelector
Parameter | Wajib | Deskripsi | Contoh |
apiVersion | Ya | Atur ke | v1 |
kind | Ya | Jenis sumber daya yang akan disebarkan. | Deployment |
namespace | Tidak | Namespace sumber daya yang disebarkan. Catatan Jika Anda menggunakan | demo |
name | Tidak | Nama sumber daya yang disebarkan. | Nama apa saja |
labelSelector | Tidak | Pilih sumber daya yang ingin Anda sebarkan menggunakan pemilih label. | |
clusterAffinity
Parameter | Wajib | Deskripsi | Contoh |
clusterNames | Tidak | ID kluster ke mana Anda ingin menyebarkan sumber daya. | |
excludeClusters | Tidak | ID kluster yang ingin Anda kecualikan. | |
labelSelector | Tidak | Pilih kluster menggunakan pemilih label. | |
ruleWithCluster
Parameter | Wajib | Deskripsi | Contoh |
targetCluster | Ya | Pilih kluster berdasarkan parameter |
|
overriders | Ya | Array
| |
overriders
Parameter | Wajib | Deskripsi | Contoh |
imageOverrider | Tidak | Metode yang digunakan untuk menimpa gambar.
| |
plaintext | Tidak | Timpa sumber daya menggunakan JSONPatch.
| |
Referensi
Untuk informasi lebih lanjut tentang cara membuat aplikasi pada Fleet instance dan cara menyebarkan aplikasi ke beberapa kluster dengan mengonfigurasi PropagationPolicy atau OverridePolicy, lihat Memulai dengan distribusi aplikasi.