Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menggunakan Azure Kubernetes Fleet Manager ResourcePlacement untuk menyebarkan sumber daya dengan cakupan namespace di seluruh kluster dalam armada.
Penting
Fitur pratinjau Azure Kubernetes Fleet Manager tersedia secara layanan mandiri dan berdasarkan sistem pendaftaran. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Pratinjau Azure Kubernetes Fleet Manager sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi.
Prasyarat
- Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
- Baca gambaran umum konseptual penempatan sumber daya dengan cakupan namespace untuk memahami konsep dan terminologi yang digunakan dalam artikel ini.
- Anda memerlukan seorang Manajer Armada dengan kluster hub dan kluster anggota. Jika Anda tidak memilikinya, lihat Membuat sumber daya Azure Kubernetes Fleet Manager dan bergabung dengan kluster anggota dengan menggunakan Azure CLI.
- Anda memerlukan akses ke API Kubernetes dari kluster hub. Jika Anda tidak memiliki akses, lihat Mengakses API Kubernetes untuk kluster hub Azure Kubernetes Fleet Manager.
Membuat namespace di seluruh kluster anggota
Sebelum Anda dapat menggunakan ResourcePlacement untuk menyebarkan sumber daya yang terlingkup namespace, namespace target harus ada di kluster anggota. Contoh ini menunjukkan cara membuat namespace layanan pada kluster hub dan menyebarkannya ke kluster anggota menggunakan ClusterResourcePlacement.
Nota
Contoh berikut menggunakan placement.kubernetes-fleet.io/v1beta1 versi API. Bidang selectionScope: NamespaceOnly ini adalah fitur pratinjau yang tersedia di v1beta1 dan tidak tersedia di API v1 yang stabil.
Buat namespace pada kluster hub.
kubectl create namespace my-appBuat
ClusterResourcePlacementobjek untuk menyebarkan namespace ke semua kluster anggota. Simpan YAML berikut ke file bernamanamespace-crp.yaml:apiVersion: placement.kubernetes-fleet.io/v1beta1 kind: ClusterResourcePlacement metadata: name: my-app-namespace spec: resourceSelectors: - group: "" kind: Namespace name: my-app version: v1 selectionScope: NamespaceOnly policy: placementType: PickAllTerapkan
ClusterResourcePlacementpada kluster hub:kubectl apply -f namespace-crp.yamlVerifikasi bahwa namespace berhasil disebarluaskan:
kubectl get clusterresourceplacement my-app-namespaceOutput Anda akan terlihat serupa dengan contoh berikut:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE my-app-namespace 1 True 1 True 1 15s
Menggunakan ResourcePlacement untuk menempatkan sumber daya dengan cakupan namespace
Objek ResourcePlacement dibuat dalam namespace layanan pada kluster hub dan digunakan untuk menyebarkan sumber daya khusus yang terlingkup namespace layanan ke kluster anggota. Contoh ini menunjukkan cara menyebarluaskan ConfigMaps ke kluster anggota tertentu menggunakan ResourcePlacement objek dengan PickFixed kebijakan penempatan.
Untuk informasi selengkapnya, lihat penempatan sumber daya dengan cakupan namespace menggunakan Azure Kubernetes Fleet Manager ResourcePlacement.
Buat ConfigMaps di namespace pada kluster hub. ConfigMaps ini akan disebarkan ke kluster anggota yang dipilih:
kubectl create configmap app-config \ --from-literal=environment=production \ --from-literal=log-level=info \ -n my-app kubectl create configmap feature-flags \ --from-literal=new-ui=enabled \ --from-literal=api-v2=disabled \ -n my-appBuat
ResourcePlacementobjek untuk menyebarluaskan ConfigMaps. Simpan YAML berikut ke file bernamaapp-configs-rp.yaml:apiVersion: placement.kubernetes-fleet.io/v1beta1 kind: ResourcePlacement metadata: name: app-configs namespace: my-app spec: resourceSelectors: - group: "" kind: ConfigMap version: v1 name: app-config - group: "" kind: ConfigMap version: v1 name: feature-flags policy: placementType: PickFixed clusterNames: - membercluster1 - membercluster2Nota
Ganti
membercluster1danmembercluster2dengan nama aktual kluster anggota Anda. Anda dapat mencantumkan kluster anggota yang tersedia menggunakankubectl get memberclusters.Terapkan
ResourcePlacementke kluster hub:kubectl apply -f app-configs-rp.yamlPeriksa kemajuan penyebaran sumber daya:
kubectl get resourceplacement app-configs -n my-appOutput Anda akan terlihat serupa dengan contoh berikut:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE app-configs 1 True 1 True 1 20sLihat detail objek penempatan:
kubectl describe resourceplacement app-configs -n my-appOutput Anda akan terlihat serupa dengan contoh berikut:
Name: app-configs Namespace: my-app Labels: <none> Annotations: <none> API Version: placement.kubernetes-fleet.io/v1beta1 Kind: ResourcePlacement Metadata: Creation Timestamp: 2025-11-13T22:08:12Z Finalizers: kubernetes-fleet.io/crp-cleanup kubernetes-fleet.io/scheduler-cleanup Generation: 1 Resource Version: 12345 UID: cec941f1-e48a-4045-b5dd-188bfc1a830f Spec: Policy: Cluster Names: membercluster1 membercluster2 Placement Type: PickFixed Resource Selectors: Group: Kind: ConfigMap Name: app-config Version: v1 Group: Kind: ConfigMap Name: feature-flags Version: v1 Revision History Limit: 10 Strategy: Type: RollingUpdate Status: Conditions: Last Transition Time: 2025-11-13T22:08:12Z Message: found all cluster needed as specified by the scheduling policy, found 2 cluster(s) Observed Generation: 1 Reason: SchedulingPolicyFulfilled Status: True Type: ResourcePlacementScheduled Last Transition Time: 2025-11-13T22:08:12Z Message: All 2 cluster(s) start rolling out the latest resource Observed Generation: 1 Reason: RolloutStarted Status: True Type: ResourcePlacementRolloutStarted Last Transition Time: 2025-11-13T22:08:13Z Message: No override rules are configured for the selected resources Observed Generation: 1 Reason: NoOverrideSpecified Status: True Type: ResourcePlacementOverridden Last Transition Time: 2025-11-13T22:08:13Z Message: Works(s) are succcesfully created or updated in 2 target cluster(s)' namespaces Observed Generation: 1 Reason: WorkSynchronized Status: True Type: ResourcePlacementWorkSynchronized Last Transition Time: 2025-11-13T22:08:13Z Message: The selected resources are successfully applied to 2 cluster(s) Observed Generation: 1 Reason: ApplySucceeded Status: True Type: ResourcePlacementApplied Last Transition Time: 2025-11-13T22:08:13Z Message: The selected resources in 2 cluster(s) are available now Observed Generation: 1 Reason: ResourceAvailable Status: True Type: ResourcePlacementAvailable Observed Resource Index: 0 Placement Statuses: Cluster Name: membercluster1 Conditions: Last Transition Time: 2025-11-13T22:08:12Z Message: Successfully scheduled resources for placement in "membercluster1": picked by scheduling policy Observed Generation: 1 Reason: Scheduled Status: True Type: Scheduled Last Transition Time: 2025-11-13T22:08:12Z Message: Detected the new changes on the resources and started the rollout process Observed Generation: 1 Reason: RolloutStarted Status: True Type: RolloutStarted Last Transition Time: 2025-11-13T22:08:13Z Message: No override rules are configured for the selected resources Observed Generation: 1 Reason: NoOverrideSpecified Status: True Type: Overridden Last Transition Time: 2025-11-13T22:08:13Z Message: All of the works are synchronized to the latest Observed Generation: 1 Reason: AllWorkSynced Status: True Type: WorkSynchronized Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are applied Observed Generation: 1 Reason: AllWorkHaveBeenApplied Status: True Type: Applied Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are available Observed Generation: 1 Reason: AllWorkAreAvailable Status: True Type: Available Observed Resource Index: 0 Cluster Name: membercluster2 Conditions: Last Transition Time: 2025-11-13T22:08:12Z Message: Successfully scheduled resources for placement in "membercluster2": picked by scheduling policy Observed Generation: 1 Reason: Scheduled Status: True Type: Scheduled Last Transition Time: 2025-11-13T22:08:12Z Message: Detected the new changes on the resources and started the rollout process Observed Generation: 1 Reason: RolloutStarted Status: True Type: RolloutStarted Last Transition Time: 2025-11-13T22:08:13Z Message: No override rules are configured for the selected resources Observed Generation: 1 Reason: NoOverrideSpecified Status: True Type: Overridden Last Transition Time: 2025-11-13T22:08:13Z Message: All of the works are synchronized to the latest Observed Generation: 1 Reason: AllWorkSynced Status: True Type: WorkSynchronized Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are applied Observed Generation: 1 Reason: AllWorkHaveBeenApplied Status: True Type: Applied Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are available Observed Generation: 1 Reason: AllWorkAreAvailable Status: True Type: Available Observed Resource Index: 0 Selected Resources: Kind: ConfigMap Name: app-config Namespace: my-app Version: v1 Kind: ConfigMap Name: feature-flags Namespace: my-app Version: v1 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal PlacementRolloutStarted 37s placement-controller Started rolling out the latest resources Normal PlacementOverriddenSucceeded 36s placement-controller Placement has been successfully overridden Normal PlacementWorkSynchronized 36s placement-controller Work(s) have been created or updated successfully for the selected cluster(s) Normal PlacementApplied 36s placement-controller Resources have been applied to the selected cluster(s) Normal PlacementAvailable 36s placement-controller Resources are available on the selected cluster(s) Normal PlacementRolloutCompleted 36s placement-controller Placement has finished the rollout process and reached the desired status
Memverifikasi sumber daya pada kluster anggota
Anda dapat memverifikasi bahwa ConfigMaps berhasil disebarkan ke kluster anggota.
Dapatkan kredensial untuk salah satu kluster anggota Anda:
az aks get-credentials --resource-group <resource-group> --name membercluster1Verifikasi bahwa namespace ada:
kubectl get namespace my-appVerifikasi bahwa ConfigMaps ada di namespace:
kubectl get configmap -n my-appOutput Anda harus menampilkan kedua ConfigMaps:
NAME DATA AGE app-config 2 2m feature-flags 2 2mLihat konten ConfigMap:
kubectl describe configmap app-config -n my-app
Membersihkan sumber daya
Jika Anda tidak lagi ingin menggunakan ResourcePlacement objek, Anda dapat menghapusnya menggunakan kubectl delete perintah :
kubectl delete resourceplacement app-configs -n my-app
Untuk juga menghapus namespace ClusterResourcePlacement :
kubectl delete clusterresourceplacement my-app-namespace
Untuk menghapus namespace dan semua sumber daya di dalamnya dari kluster hub:
kubectl delete namespace my-app
Konten terkait
Untuk mempelajari selengkapnya tentang penempatan sumber daya dengan cakupan namespace, lihat sumber daya berikut ini:
- Menggunakan ResourcePlacement untuk menyebarkan sumber daya dengan cakupan namespace
- Menggunakan ClusterResourcePlacement untuk menyebarkan sumber daya yang tercakup dalam kluster
- Memahami output status penempatan sumber daya
- Gunakan override untuk menyesuaikan sumber daya yang memiliki cakupan namespace
- Menentukan strategi peluncuran untuk penempatan sumber daya
- Tanya Jawab Umum penempatan sumber daya kluster