Unterstützung für die Verbesserung dieser Seite beitragen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten unter, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
ACK-Konzepte
ACK verwaltet AWS Ressourcen über Kubernetes-APIs, indem es den gewünschten Status in Ihren Manifesten kontinuierlich mit dem tatsächlichen Status abgleicht. AWS Wenn Sie eine benutzerdefinierte Kubernetes-Ressource erstellen oder aktualisieren, führt ACK die erforderlichen AWS API-Aufrufe durch, um die entsprechende AWS Ressource zu erstellen oder zu ändern, überwacht sie dann auf Abweichungen und aktualisiert den Kubernetes-Status, um den aktuellen Status widerzuspiegeln. Mit diesem Ansatz können Sie die Infrastruktur mithilfe vertrauter Kubernetes-Tools und -Workflows verwalten und gleichzeitig die Konsistenz zwischen Ihrem Cluster und aufrechterhalten. AWS
In diesem Thema werden die grundlegenden Konzepte erläutert, auf denen ACK AWS Ressourcen mithilfe von Kubernetes-APIs verwaltet.
Erste Schritte mit ACK
Nachdem Sie die ACK-Funktion erstellt haben (sieheErstellen Sie eine ACK-Fähigkeit), können Sie mit der Verwaltung von AWS Ressourcen mithilfe von Kubernetes-Manifestn in Ihrem Cluster beginnen.
Erstellen Sie beispielsweise dieses S3-Bucket-Manifest in bucket.yaml und wählen Sie Ihren eigenen eindeutigen Bucket-Namen.
apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-test-bucket namespace: default spec: name:my-unique-bucket-name-12345
Wenden Sie das Manifest an:
kubectl apply -f bucket.yaml
Überprüfen Sie den Status:
kubectl get bucket my-test-bucket kubectl describe bucket my-test-bucket
Stellen Sie sicher, dass der Bucket erstellt wurde in AWS:
aws s3 ls | grepmy-unique-bucket-name-12345
Löschen Sie die Kubernetes-Ressource:
kubectl delete bucket my-test-bucket
Stellen Sie sicher, dass der Bucket gelöscht wurde aus: AWS
aws s3 ls | grepmy-unique-bucket-name-12345
Der Bucket sollte nicht mehr in der Liste erscheinen, was zeigt, dass ACK den gesamten Lebenszyklus der AWS Ressourcen verwaltet.
Weitere Informationen zu den ersten Schritten mit ACK finden Sie unter Erste Schritte mit ACK
Lebenszyklus und Abstimmung der Ressourcen
ACK verwendet eine kontinuierliche Abstimmungsschleife, um sicherzustellen, dass Ihre AWS Ressourcen dem gewünschten Status entsprechen, der in Ihren Kubernetes-Manifesten definiert ist.
So funktioniert der Abgleich:
-
Sie erstellen oder aktualisieren eine benutzerdefinierte Kubernetes-Ressource (z. B. einen S3-Bucket)
-
ACK erkennt die Änderung und vergleicht den gewünschten Zustand mit dem tatsächlichen Zustand in AWS
-
Wenn sie sich unterscheiden, führt ACK AWS API-Aufrufe durch, um den Unterschied auszugleichen
-
ACK aktualisiert den Ressourcenstatus in Kubernetes, um den aktuellen Status widerzuspiegeln
-
Die Schleife wiederholt sich kontinuierlich, in der Regel alle paar Stunden
Der Abgleich wird ausgelöst, wenn Sie eine neue Kubernetes-Ressource erstellen, die einer vorhandenen Ressource aktualisieren oder wenn ACK feststelltspec, dass manuelle Änderungen außerhalb AWS von ACK vorgenommen wurden. Darüber hinaus führt ACK einen regelmäßigen Abgleich mit einem Resynchronisierungszeitraum von 10 Stunden durch. Änderungen an Kubernetes-Ressourcen lösen einen sofortigen Abgleich aus, während während der regelmäßigen Resynchronisierung eine passive Drift-Erkennung von AWS Upstream-Ressourcenänderungen erfolgt.
Beim Durcharbeiten des obigen Beispiels für die ersten Schritte führt ACK die folgenden Schritte aus:
-
Prüft, ob ein Bucket existiert in AWS
-
Wenn nicht, ruft an
s3:CreateBucket -
Aktualisiert den Kubernetes-Status mit Bucket-ARN und Status
-
Setzt die Überwachung auf Abweichungen fort
Weitere Informationen zur Funktionsweise von ACK finden Sie unter ACK Reconciliation
Status: Bedingungen
ACK-Ressourcen verwenden Statusbedingungen, um ihren Status zu kommunizieren. Das Verständnis dieser Bedingungen hilft Ihnen, Probleme zu beheben und den Zustand der Ressourcen zu verstehen.
-
Bereit: Zeigt an, dass die Ressource zur Nutzung bereit ist (standardisierte Kubernetes-Bedingung).
-
ACK.ResourceSynced: Zeigt an, dass die Ressourcenspezifikation dem AWS Ressourcenstatus entspricht.
-
ACK.Terminal: Zeigt an, dass ein nicht behebbarer Fehler aufgetreten ist.
-
ACK.Adopted: Zeigt an, dass die Ressource aus einer vorhandenen AWS Ressource übernommen und nicht neu erstellt wurde.
-
ACK.Recoverable: Weist auf einen behebbaren Fehler hin, der behoben werden kann, ohne dass die Spezifikation aktualisiert wird.
-
ACK.Advisory: Stellt beratende Informationen zur Ressource bereit.
-
ACK.LateInitialized: Gibt an, ob die späte Initialisierung der Felder abgeschlossen ist.
-
ACK.ReferencesResolved: Gibt an, ob alle
AWSResourceReferenceFelder aufgelöst wurden. -
ACK.IAMRoleSelected: Zeigt an, ob IAMRoleSelector eine Person für die Verwaltung dieser Ressource ausgewählt wurde.
Überprüfen Sie den Ressourcenstatus:
# Check if resource is ready kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' # Check for terminal errors kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="ACK.Terminal")]}'
Beispiel für einen Status:
status: conditions: - type: Ready status: "True" lastTransitionTime: "2024-01-15T10:30:00Z" - type: ACK.ResourceSynced status: "True" lastTransitionTime: "2024-01-15T10:30:00Z" - type: ACK.Terminal status: "True" ackResourceMetadata: arn: arn:aws:s3:::my-unique-bucket-name ownerAccountID: "111122223333" region: us-west-2
Weitere Informationen zum ACK-Status und zu den ACK-Bedingungen finden Sie unter ACK-Bedingungen
Richtlinien zum Löschen
Die Löschrichtlinie von ACK steuert, was mit AWS Ressourcen passiert, wenn Sie die Kubernetes-Ressource löschen.
Löschen (Standard)
Die AWS Ressource wird gelöscht, wenn Sie die Kubernetes-Ressource löschen: Dies ist das Standardverhalten.
# No annotation needed - this is the default apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: temp-bucket spec: name: temporary-bucket
Durch das Löschen dieser Ressource wird der S3-Bucket in gelöscht. AWS
Beibehalten
Die AWS Ressource wird beibehalten, wenn Sie die Kubernetes-Ressource löschen:
apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: important-bucket annotations: services.k8s.aws/deletion-policy: "retain" spec: name: production-data-bucket
Wenn Sie diese Ressource löschen, wird sie aus Kubernetes entfernt, der S3-Bucket bleibt jedoch erhalten. AWS
Die retain Richtlinie ist nützlich für Produktionsdatenbanken, die die Kubernetes-Ressource überdauern sollen, gemeinsam genutzte Ressourcen, die von mehreren Anwendungen verwendet werden, Ressourcen mit wichtigen Daten, die nicht versehentlich gelöscht werden sollten, oder für temporäres ACK-Management, bei dem Sie eine Ressource übernehmen, konfigurieren und dann wieder für die manuelle Verwaltung freigeben.
Weitere Informationen zur ACK-Löschrichtlinie finden Sie unter ACK-Löschrichtlinie
Übernahme von Ressourcen
Die Einführung ermöglicht es Ihnen, vorhandene AWS Ressourcen dem ACK-Management zu unterwerfen, ohne sie neu erstellen zu müssen.
Wann sollte Adoption verwendet werden:
-
Migration der vorhandenen Infrastruktur auf das ACK-Management
-
Wiederherstellung verwaister AWS Ressourcen bei versehentlichem Löschen von Ressourcen in Kubernetes
-
Importieren von Ressourcen, die mit anderen Tools (CloudFormationTerraform) erstellt wurden
So funktioniert Adoption:
apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name
Wenn Sie diese Ressource erstellen:
-
ACK prüft, ob ein Bucket mit diesem Namen existiert in AWS
-
Wenn er gefunden wird, übernimmt ACK ihn (es müssen keine API-Aufrufe erstellt werden)
-
ACK liest die aktuelle Konfiguration von AWS
-
ACK aktualisiert den Kubernetes-Status, um den tatsächlichen Status widerzuspiegeln
-
Bei zukünftigen Updates wird die Ressource normal abgeglichen
Nach der Übernahme werden Ressourcen wie jede andere ACK-Ressource verwaltet. Wenn Sie die Kubernetes-Ressource löschen, wird die Ressource gelöscht, sofern Sie nicht die AWS Löschrichtlinie verwenden. retain
Bei der Übernahme von Ressourcen muss die AWS Ressource bereits existieren und ACK benötigt Leseberechtigungen, um sie zu erkennen. Die adopt-or-create Richtlinie übernimmt die Ressource, falls sie existiert, oder erstellt sie, wenn sie nicht existiert. Dies ist nützlich, wenn Sie einen deklarativen Workflow wünschen, der unabhängig davon funktioniert, ob die Ressource existiert oder nicht.
Weitere Informationen zur Übernahme von ACK-Ressourcen finden Sie unter ACK Resource Adoption
Cross-account und regionsübergreifende Ressourcen
ACK kann Ressourcen in verschiedenen AWS Konten und Regionen von einem einzigen Cluster aus verwalten.
Cross-region Anmerkungen zu Ressourcen
Sie können die Region einer AWS Ressource mithilfe einer Anmerkung angeben:
apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: eu-bucket annotations: services.k8s.aws/region: eu-west-1 spec: name: my-eu-bucket
Sie können auch die Region aller AWS Ressourcen angeben, die in einem bestimmten Namespace erstellt wurden:
Namespace-Anmerkungen
Legen Sie eine Standardregion für alle Ressourcen in einem Namespace fest:
apiVersion: v1 kind: Namespace metadata: name: production annotations: services.k8s.aws/default-region: us-west-2
Ressourcen, die in diesem Namespace erstellt werden, verwenden diese Region, sofern sie nicht durch eine Anmerkung auf Ressourcenebene überschrieben werden.
Cross-account
Verwenden Sie IAM-Role Selectors, um Namespaces bestimmte IAM-Rollen zuzuordnen:
apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: target-account-config spec: arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole namespaceSelector: names: - production
Ressourcen, die im zugewiesenen Namespace erstellt wurden, verwenden automatisch die angegebene Rolle.
Weitere Informationen zu IAM-Rollenselektoren finden Sie unter ACK Resource Management. Cross-Account
Fehlerbehandlung und Wiederholungsverhalten
ACK behandelt vorübergehende Fehler automatisch und wiederholt fehlgeschlagene Operationen.
Strategie wiederholen:
-
Vorübergehende Fehler (Ratenbegrenzung, vorübergehende Serviceprobleme, unzureichende Berechtigungen) lösen automatische Wiederholungsversuche aus
-
Exponentielles Backoff verhindert eine Überlastung der APIs AWS
-
Die maximale Anzahl von Wiederholungsversuchen variiert je nach Fehlertyp
-
Dauerhafte Fehler (ungültige Parameter, Konflikte mit Ressourcennamen) werden nicht wiederholt
Überprüfen Sie den Ressourcenstatus auf Fehlerdetails mithilfe vonkubectl describe:
kubectl describe bucket my-bucket
Suchen Sie nach Statusbedingungen mit Fehlermeldungen, Ereignissen, die aktuelle Abstimmungsversuche anzeigen, und nach dem message Feld in den Statusbedingungen, die Fehler erklären. Zu den häufigsten Fehlern gehören unzureichende IAM-Berechtigungen, Konflikte bei den Ressourcennamen AWS, ungültige Konfigurationswerte in der und das spec Überschreiten von AWS Dienstkontingenten.
Informationen zur Behebung häufiger Fehler finden Sie unterProbleme mit ACK-Funktionen beheben.
Zusammensetzung von Ressourcen mit Kro
Verwenden Sie die EKS-Funktion für kro (Kube Resource Orchestrator), um mehrere ACK-Ressourcen zusammenzustellen und zu verbinden. kro bietet eine deklarative Methode zur Definition von Ressourcengruppen, wobei die Konfiguration zwischen Ressourcen weitergegeben wird, um komplexe Infrastrukturmuster einfach zu verwalten.
Ausführliche Beispiele für die Erstellung benutzerdefinierter Ressourcenkompositionen mit ACK-Ressourcen finden Sie unter. Kro-Konzepte
Nächste Schritte
-
ACK-Überlegungen für EKS- EKS-specific Muster und Integrationsstrategien