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 la ubicación de recursos del clúster de Fleet Manager de Azure Kubernetes para implementar cargas de trabajo en clústeres de una flota.
Requisitos previos
- Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.
- Lea la introducción conceptual de la propagación de recursos 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 ninguno, consulte Creación de un recurso de Azure Kubernetes Fleet Manager y unión a clústeres miembros mediante la CLI de Azure.
- Los clústeres miembro deben etiquetarse correctamente en el clúster de centro para que coincidan con los criterios de selección deseados. En las etiquetas de ejemplo, se incluyen las de región, entorno, equipo, zonas de disponibilidad, disponibilidad del nodo o cualquier otra que se quiera.
- 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.
Uso de ClusterResourcePlacement para colocar recursos en clústeres miembros
El ClusterResourcePlacement
objeto se crea en el clúster de concentrador y se usa para propagar los recursos a los clústeres miembro. Especifica los recursos que se propagan y la directiva de colocación que se va a usar al seleccionar clústeres miembros. En este ejemplo se muestra cómo propagar un espacio de nombres a los clústeres de miembros mediante el ClusterResourcePlacement
objeto con una PickAll
directiva de selección de ubicación.
Para más información, consulte la colocación de recursos del clúster mediante Azure Kubernetes Fleet Manager y la documentación de código abierto de KubeFleet.
- Cree un espacio de nombres para colocarlo en los clústeres de miembros:
kubectl create namespace my-namespace
- Cree un objeto
ClusterResourcePlacement
y aplique al clúster del centro de Fleet Manager. En el ejemplo siguiente, se usa unClusterResourcePlacement
denominadodistribute-my-namespace
para implementar un espacio de nombresmy-namespace
en todos los clústeres miembro mediante la política de ubicación dePickAll
.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: distribute-my-namespace
spec:
resourceSelectors:
- group: ""
kind: Namespace
version: v1
name: my-namespace
policy:
placementType: PickAll
Aplique esto al clúster del centro de Fleet Manager emitiendo kubectl apply -f distribute-my-namespace.yaml
, con el nombre del archivo que creó en lugar de distribute-my-namespace.yaml
.
- Compruebe el progreso de la propagación de recursos:
kubectl get clusterresourceplacement distribute-my-namespace
La salida debería similar al siguiente ejemplo:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-my-namespace 2 True 2 True 2 10s
- Vea los detalles del objeto de colocación:
kubectl describe clusterresourceplacement distribute-my-namespace
La salida debería similar al siguiente ejemplo:
Name: distribute-my-namespace
Namespace:
Labels: <none>
Annotations: <none>
API Version: placement.kubernetes-fleet.io/v1
Kind: ClusterResourcePlacement
Metadata:
Creation Timestamp: 2024-04-01T18:55:31Z
Finalizers:
kubernetes-fleet.io/crp-cleanup
kubernetes-fleet.io/scheduler-cleanup
Generation: 2
Resource Version: 6949
UID: 815b1d81-61ae-4fb1-a2b1-06794be3f986
Spec:
Policy:
Placement Type: PickAll
Resource Selectors:
Group:
Kind: Namespace
Name: my-namespace
Version: v1
Revision History Limit: 10
Strategy:
Type: RollingUpdate
Status:
Conditions:
Last Transition Time: 2024-04-01T18:55:31Z
Message: found all the clusters needed as specified by the scheduling policy
Observed Generation: 2
Reason: SchedulingPolicyFulfilled
Status: True
Type: ClusterResourcePlacementScheduled
Last Transition Time: 2024-04-01T18:55:36Z
Message: All 3 cluster(s) are synchronized to the latest resources on the hub cluster
Observed Generation: 2
Reason: SynchronizeSucceeded
Status: True
Type: ClusterResourcePlacementSynchronized
Last Transition Time: 2024-04-01T18:55:36Z
Message: Successfully applied resources to 3 member clusters
Observed Generation: 2
Reason: ApplySucceeded
Status: True
Type: ClusterResourcePlacementApplied
Observed Resource Index: 0
Placement Statuses:
Cluster Name: membercluster1
Conditions:
Last Transition Time: 2024-04-01T18:55:31Z
Message: Successfully scheduled resources for placement in membercluster1 (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 2
Reason: ScheduleSucceeded
Status: True
Type: ResourceScheduled
Last Transition Time: 2024-04-01T18:55:36Z
Message: Successfully Synchronized work(s) for placement
Observed Generation: 2
Reason: WorkSynchronizeSucceeded
Status: True
Type: WorkSynchronized
Last Transition Time: 2024-04-01T18:55:36Z
Message: Successfully applied resources
Observed Generation: 2
Reason: ApplySucceeded
Status: True
Type: ResourceApplied
Cluster Name: membercluster2
Conditions:
Last Transition Time: 2024-04-01T18:55:31Z
Message: Successfully scheduled resources for placement in membercluster2 (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 2
Reason: ScheduleSucceeded
Status: True
Type: ResourceScheduled
Last Transition Time: 2024-04-01T18:55:36Z
Message: Successfully Synchronized work(s) for placement
Observed Generation: 2
Reason: WorkSynchronizeSucceeded
Status: True
Type: WorkSynchronized
Last Transition Time: 2024-04-01T18:55:36Z
Message: Successfully applied resources
Observed Generation: 2
Reason: ApplySucceeded
Status: True
Type: ResourceApplied
Cluster Name: membercluster3
Conditions:
Last Transition Time: 2024-04-01T18:55:31Z
Message: Successfully scheduled resources for placement in membercluster3 (affinity score: 0, topology spread score: 0): picked by scheduling policy
Observed Generation: 2
Reason: ScheduleSucceeded
Status: True
Type: ResourceScheduled
Last Transition Time: 2024-04-01T18:55:36Z
Message: Successfully Synchronized work(s) for placement
Observed Generation: 2
Reason: WorkSynchronizeSucceeded
Status: True
Type: WorkSynchronized
Last Transition Time: 2024-04-01T18:55:36Z
Message: Successfully applied resources
Observed Generation: 2
Reason: ApplySucceeded
Status: True
Type: ResourceApplied
Selected Resources:
Kind: Namespace
Name: my-namespace
Version: v1
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal PlacementScheduleSuccess 108s cluster-resource-placement-controller Successfully scheduled the placement
Normal PlacementSyncSuccess 103s cluster-resource-placement-controller Successfully synchronized the placement
Normal PlacementRolloutCompleted 103s cluster-resource-placement-controller Resources have been applied to the selected clusters
Limpieza de recursos
Si ya no quiere usar el objeto ClusterResourcePlacement
, puede eliminarlo mediante el comando kubectl delete
. En el ejemplo siguiente se elimina el objeto ClusterResourcePlacement
denominado distribute-my-namespace
:
kubectl delete clusterresourceplacement distribute-my-namespace
Contenido relacionado
Para más información sobre la propagación de recursos, consulte los siguientes recursos:
- Colocación inteligente de recursos de Kubernetes entre clústeres en función de las propiedades de los clústeres miembros
- Control de la expulsión y la interrupción para la colocación de recursos del clúster.
- Definición de una estrategia de implementación para una ubicación de recursos de clúster.
- Preguntas más frecuentes sobre la selección de ubicación de recursos del clúster.
- Documentación de KubeFleet de código abierto.
Azure Kubernetes Service