Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✔️ Fleet Manager met hubcluster
Met resourceplaatsing in Azure Kubernetes Fleet Manager kunt u resources op clusterniveau, waaronder naamruimten en de onderliggende resources daarvan, distribueren en synchroniseren over meerdere clusters in uw fleet. Deze functie vereenvoudigt implementaties met meerdere clusters door consistente resourceconfiguratie in uw infrastructuur te garanderen, handmatige overhead te verminderen en u in staat te stellen complexe workloads op schaal te beheren met één bron van waarheid. In dit artikel wordt uitgelegd hoe u ClusterResourcePlacement gebruikt om een naamruimte en de bijbehorende workloads naar lidclusters te distribueren.
Als u afzonderlijke resources in een naamruimte wilt distribueren, raadpleegt u de documentatie over resourceplaatsing binnen het naamruimtebereik.
U kunt de stappen in dit artikel uitvoeren met behulp van de Azure-portal of de Azure CLI.
Note
U kunt de plaatsing van resources van Fleet Manager gebruiken met AKS- en Azure Arc Kubernetes-clusters.
Voordat u begint
- Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
- Lees het conceptuele overzicht van de plaatsing van resources om de concepten en terminologie te begrijpen die in dit artikel worden gebruikt.
- U hebt een Fleet Manager nodig met een hubcluster en lidclusters. Als u nog geen resource hebt, raadpleegt u Een Azure Kubernetes Fleet Manager-resource maken en lidclusters koppelen met behulp van de Azure CLI.
- U hebt toegang nodig tot de Kubernetes-API van het hubcluster. Als u geen toegang hebt, raadpleegt u De Kubernetes-API voor een Azure Kubernetes Fleet Manager-hubcluster.
Een naamruimte en de bijbehorende resources distribueren naar lidclusters
Gebruik het eenvoudige scenario waarin u een Deployment en Service implementeert in alle clusters binnen het clusterpark. Maak een naamruimte op uw Fleet Manager-hubcluster, voeg er de workloads aan toe en gebruik vervolgens een ClusterResourcePlacement om de naamruimte en alle inhoud ervan naar alle lidclusters te distribueren met behulp van het PickAll-plaatsingsbeleid.
Stel de volgende omgevingsvariabelen in voor uw abonnements-id, resourcegroep en Kubernetes Fleet-resource:
export SUBSCRIPTION_ID=<subscription-id> export GROUP=<resource-group-name> export FLEET=<fleet-name>Stel het standaardabonnement Azure in met behulp van de opdracht [
az account set][az-account-set]:az account set \ --subscription ${SUBSCRIPTION_ID}Haal het kubeconfig-bestand van het Kubernetes Fleet-hubcluster op met behulp van de opdracht [
az fleet get-credentials][az-fleet-get-credentials]:az fleet get-credentials \ --resource-group ${GROUP} \ --name ${FLEET}De uitvoer moet er ongeveer als volgt uitzien.
Merged "hub" as current context in /home/fleet/.kube/configNote
Als er een foutbericht van het type
InvalidHubOperationwordt weergegeven met het bericht dat de vloot hubloos is, voegt u een hubcluster toe. Zie clusterstype van de upgradehub voor meer informatie.Maak een naamruimte op het hubcluster.
kubectl create namespace test-appSla de volgende YAML op als
test-workload.yaml.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: test-app spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service namespace: test-app spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancerFaseer de testworkload naar het Fleet Manager-hubcluster met behulp van
kubectl.kubectl apply -f test-workload.yamlSla de volgende YAML op als
crp-distribute-workload.yaml.apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: distribute-test-app spec: resourceSelectors: - group: "" kind: Namespace version: v1 name: test-app policy: placementType: PickAllPas het plaatsingsmanifest toe op het Fleet Manager-hubcluster.
kubectl apply -f crp-distribute-workload.yamlNote
De implementatie van de resource begint onmiddellijk met het toepassen van het manifest. Er wordt een impliciete
RollingUpdatestrategie gebruikt. Zie een uitrolstrategie definiëren voor de plaatsing van resources voor informatie over hoe u meer controle krijgt over de uitrol.Controleer de voortgang van de plaatsing van resources.
kubectl get clusterresourceplacement distribute-test-app
Uw uitvoer moet er ongeveer uitzien als de uitvoer in het volgende voorbeeld:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-test-app 2 True 2 True 2 10s
- Bekijk de details van de plaatsing.
kubectl describe clusterresourceplacement distribute-test-app
Uw uitvoer moet er ongeveer uitzien als de uitvoer in het volgende voorbeeld:
Name: distribute-test-app
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: test-app
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
Ga in de Azure portal naar uw Fleet Manager.
Selecteer in het servicemenu onder Fleet Resources de optie Naamruimten>+ Maken.
Note
Als u Fleet-resources niet ziet, heeft uw Fleet Manager geen hubcluster. Zie hubclustertype upgraden voor meer informatie over hoe u er een toevoegt.
Selecteer in het menu Namespace, voer een Name in en selecteer vervolgens Create.
Na enkele ogenblikken wordt de pagina vernieuwd en wordt de naamruimte weergegeven in de lijst met naamruimten op het Fleet Manager-hubcluster. Het is nu klaar om resources te hosten die u over de lidclusters wilt distribueren.
Selecteer boven aan de lijst met naamruimten + Maken>Een YAML toepassen en gebruik de volgende voorbeelden.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: test-app spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57 ports: - containerPort: 80apiVersion: v1 kind: Service metadata: name: nginx-service namespace: test-app spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancerKopieer en plak de voorbeelden en pas ze één voor één toe, zoals wordt weergegeven in de volgende afbeelding.
De naamruimte en de bijbehorende workloads zijn nu klaar om te worden gedistribueerd naar lidclusters. De implementatie en service worden niet gepland op het Fleet Manager-hubcluster.
Selecteer in het servicemenu onder Fleet Resourcesde optie Resourceplaatsingen>+ Maken.
Configureer de volgende opties op het tabblad Basisbeginselen :
Voer in de plaatsingsgegevens een naam in voor de plaatsing.
Laat Scope onder Resourcedetails staan als clusterbereik en voer het type groep versie (GVK) en de naam van de resource in die u wilt distribueren. Gebruik in dit voorbeeld de volgende waarden.
group: "" kind: Namespace version: v1 name: test-appKies bij Selectie van lidcluster voor plaatsingstypeAlle clusters.
Laat voor Rollout de strategie Rolling update geselecteerd staan.
Selecteer Volgende om het resulterende
ClusterResourcePlacementmanifest te controleren. U kunt het manifest indien nodig wijzigen, valideren met behulp van de optie Valideren (drooguitvoering) of Beoordelen + maken selecteren om verder te gaan met de definitieve bevestiging.Selecteer Maken om de distributie van de naamruimte onmiddellijk te starten.
Note
De implementatie van de resource begint onmiddellijk wanneer u de plaatsing van de resource toepast met behulp van de geselecteerde
RollingUpdatestrategie. Zie een uitrolstrategie voor de plaatsing van resources definiëren voor meer informatie over hoe u meer controle kunt krijgen over de uitrol.De pagina wordt vernieuwd en de lijst Resourceplaatsingen geeft de zojuist gemaakte plaatsing weer. Het toont het aantal geselecteerde clusters en of de vlootplanner aan het plaatsingsbeleid kan voldoen.
Bekijk de implementatiestatus van de plaatsing door de plaatsingsnaam in de lijst te selecteren. Selecteer afzonderlijke clusters om de uitrol van de resource op dat cluster te bekijken.
Op de geselecteerde Kubernetes-clusters treft u de namespace, Deployment en Service aan, die zijn uitgerold en operationeel zijn.
Verwijder de plaatsing om de bronnen te verwijderen
Wanneer u de plaatsing van resources in het Fleet Manager-hubcluster verwijdert, verwijdert u de gedistribueerde resources uit geselecteerde lidclusters.
kubectl delete clusterresourceplacement distribute-test-app
Selecteer in het servicemenu onder VlootbronnenResourceplaatsingen.
Selecteer de plaatsing in de lijst met resourceplaatsingen en selecteer Verwijderen.
Controleer bij Verwijderen of u de juiste plaatsing hebt gekozen. Wanneer u klaar bent, selecteert u Verwijderen bevestigen>.
De pagina wordt vernieuwd en de plaatsing wordt niet meer weergegeven in de lijst. De resources worden verwijderd uit lidclusters.
Verwante inhoud
Zie de volgende resources voor meer informatie over de plaatsing van resources:
- Resources met naamruimtebereik implementeren in meerdere clusters
- Inzicht in de uitvoer van de status van de resourceplaatsing.
- Intelligente plaatsing van Kubernetes-resources tussen clusters op basis van de eigenschappen van lidclusters.
- Uitzetting en verstoring beheren bij het plaatsen van clusterresources.
- Een implementatiestrategie definiëren voor de plaatsing van clusterresources.
- Veelgestelde vragen over plaatsing van clusterresources.
- Opensource KubeFleet ClusterResourcePlacement-documentatie.