Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo usar Fleet Manager ResourcePlacement de Azure Kubernetes para implementar recursos con ámbito de espacio de nombres en clústeres de una flota.
Importante
Las características en vista previa de Azure Kubernetes Fleet Manager están disponibles en autoservicio y de manera opcional. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de Azure Kubernetes Fleet Manager reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción.
Prerrequisitos
- Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.
- Lea la visión general conceptual de la colocación de recursos con ámbito de espacio de nombres para comprender los conceptos y la terminología que se usan en este artículo.
- Necesita un administrador de flotas con un clúster concentrador y clústeres miembros. Si no tiene uno, consulte Creación de un recurso de Azure Kubernetes Fleet Manager y unión a clústeres de miembros mediante la CLI de Azure.
- Necesita acceso a la API de Kubernetes del clúster de centros. Si no tiene acceso, consulte Acceso a la API de Kubernetes para un clúster central de Azure Kubernetes Fleet Manager.
Establecimiento del espacio de nombres entre clústeres de miembros
Para poder usar ResourcePlacement para implementar recursos con ámbito de nombres, el espacio de nombres de destino debe existir en los clústeres miembros. En este ejemplo se muestra cómo crear un espacio de nombres en el clúster de concentrador y propagarlo a clústeres miembro mediante ClusterResourcePlacement.
Nota:
En el ejemplo siguiente se usa la versión de la placement.kubernetes-fleet.io/v1beta1 API. El selectionScope: NamespaceOnly campo es una característica en versión preliminar disponible en v1beta1 y no está disponible en la API estable v1.
Cree un espacio de nombres en el clúster principal.
kubectl create namespace my-appCree un
ClusterResourcePlacementobjeto para propagar el espacio de nombres a todos los clústeres miembro. Guarde el siguiente CÓDIGO YAML en un archivo denominadonamespace-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: PickAllAplique el
ClusterResourcePlacemental clúster del concentrador.kubectl apply -f namespace-crp.yamlCompruebe que el espacio de nombres se propagó correctamente:
kubectl get clusterresourceplacement my-app-namespaceLa salida debería parecerse al siguiente ejemplo.
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE my-app-namespace 1 True 1 True 1 15s
Uso de ResourcePlacement para ubicar recursos con ámbito de espacio de nombres
El objeto ResourcePlacement se crea en el espacio de nombres del clúster de concentradores y se utiliza para propagar recursos específicos con alcance de espacio de nombres a los clústeres miembros. En este ejemplo se muestra cómo propagar ConfigMaps a clústeres de miembros específicos mediante el ResourcePlacement objeto con una PickFixed directiva de selección de ubicación.
Para más información, consulte Ubicación de recursos con ámbito de espacio de nombres mediante ResourcePlacement de Azure Kubernetes Fleet Manager.
Cree ConfigMaps en el espacio de nombres del clúster del concentrador. Estos ConfigMaps se propagarán a los clústeres de miembros seleccionados:
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-appCree un objeto
ResourcePlacementpara propagar los ConfigMaps. Guarde el siguiente CÓDIGO YAML en un archivo denominadoapp-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:
Reemplace
membercluster1ymembercluster2por los nombres reales de los clústeres de miembros. Puede enumerar los clústeres de miembros disponibles mediantekubectl get memberclusters.Aplique
ResourcePlacemental clúster del concentrador:kubectl apply -f app-configs-rp.yamlCompruebe el progreso de la propagación de recursos:
kubectl get resourceplacement app-configs -n my-appLa salida debería parecerse al siguiente ejemplo.
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE app-configs 1 True 1 True 1 20sVea los detalles del objeto de colocación:
kubectl describe resourceplacement app-configs -n my-appLa salida debería parecerse al siguiente ejemplo.
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
Comprobación de recursos en clústeres de miembros
Puede comprobar que los ConfigMaps se propagaron correctamente a los clústeres miembros.
Obtenga las credenciales de uno de los clústeres de miembros:
az aks get-credentials --resource-group <resource-group> --name membercluster1Verifique que el espacio de nombres exista:
kubectl get namespace my-appCompruebe que configMaps existe en el espacio de nombres:
kubectl get configmap -n my-appLa salida debe mostrar ambos ConfigMaps:
NAME DATA AGE app-config 2 2m feature-flags 2 2mVea el contenido de ConfigMap.
kubectl describe configmap app-config -n my-app
Limpieza de recursos
Si ya no desea usar los ResourcePlacement objetos, puede eliminarlos mediante el kubectl delete comando :
kubectl delete resourceplacement app-configs -n my-app
Para también quitar el espacio de nombres ClusterResourcePlacement:
kubectl delete clusterresourceplacement my-app-namespace
Para eliminar el espacio de nombres y todos los recursos que contiene del clúster del hub:
kubectl delete namespace my-app
Contenido relacionado
Para más información sobre la asignación de ubicaciones de recursos dentro del ámbito del espacio de nombres, consulte los siguientes recursos:
- Uso de ResourcePlacement para implementar recursos con ámbito de espacio de nombres
- Uso de ClusterResourcePlacement para implementar recursos con ámbito de clúster
- Comprensión de la salida del estado de ubicación de recursos
- Uso de invalidaciones para personalizar recursos de ámbito de espacio de nombres
- Definición de una estrategia de despliegue para la colocación de recursos
- Preguntas más frecuentes sobre la selección de ubicación de recursos del clúster