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.
Clusterzugriff für Amazon aktivieren EMR auf EKS
Aktivieren Sie den Clusterzugriff mithilfe von EKS Access Entry (empfohlen)
Anmerkung
Der aws-auth
ConfigMap ist veraltet. Die empfohlene Methode zur Verwaltung des Zugriffs auf Kubernetes APIs ist Access Entries.
Amazon EMR ist in Amazon EKS Cluster Access Management (CAM) integriert, sodass Sie die Konfiguration der erforderlichen AuthN- und AuthZ-Richtlinien automatisieren können, um Amazon EMR Spark-Jobs in Namespaces von Amazon-Clustern auszuführen. EKS Wenn Sie einen virtuellen Cluster aus einem EKS Amazon-Cluster-Namespace erstellen, konfiguriert Amazon EMR automatisch alle erforderlichen Berechtigungen, sodass Sie Ihren aktuellen Workflows keine zusätzlichen Schritte hinzufügen müssen.
Anmerkung
Die EMR Amazon-Integration mit Amazon EKS CAM wird nur für neue Amazon EMR auf EKS virtuellen Clustern unterstützt. Sie können bestehende virtuelle Cluster nicht migrieren, um diese Integration zu nutzen.
Voraussetzungen
-
Stellen Sie sicher, dass Sie Version 2.15.3 oder höher von ausführen AWS CLI
-
Ihr EKS Amazon-Cluster muss Version 1.23 oder höher haben.
Aufstellen
Um die Integration zwischen Amazon EMR und den AccessEntry API Vorgängen von Amazon einzurichtenEKS, stellen Sie sicher, dass Sie die folgenden Punkte abgeschlossen haben:
-
Stellen Sie sicher, dass
authenticationMode
Ihr EKS Amazon-Cluster auf eingestellt istAPI_AND_CONFIG_MAP
.aws eks describe-cluster --name
<eks-cluster-name>
Falls dies noch nicht der Fall ist, stellen Sie es
authenticationMode
auf einAPI_AND_CONFIG_MAP
.aws eks update-cluster-config --name
<eks-cluster-name>
--access-config authenticationMode=API_AND_CONFIG_MAPWeitere Informationen zu Authentifizierungsmodi finden Sie unter Cluster-Authentifizierungsmodi.
-
Stellen Sie sicher, dass die IAMRolle, die Sie zum Ausführen der
CreateVirtualCluster
DeleteVirtualCluster
API AND-Operationen verwenden, auch über die folgenden Berechtigungen verfügt:{ "Effect": "Allow", "Action": [ "eks:CreateAccessEntry" ], "Resource": "arn:
<AWS_PARTITION>
:eks:<AWS_REGION>
:<AWS_ACCOUNT_ID>
:cluster/<EKS_CLUSTER_NAME>
" }, { "Effect": "Allow", "Action": [ "eks:DescribeAccessEntry", "eks:DeleteAccessEntry", "eks:ListAssociatedAccessPolicies", "eks:AssociateAccessPolicy", "eks:DisassociateAccessPolicy" ], "Resource": "arn:<AWS_PARTITION>
:eks:<AWS_REGION>:<AWS_ACCOUNT_ID>:access-entry/<EKS_CLUSTER_NAME>/role/<AWS_ACCOUNT_ID>/AWSServiceRoleForAmazonEMRContainers/*" }
Konzepte und Terminologie
Im Folgenden finden Sie eine Liste von Terminologien und Konzepten im Zusammenhang mit Amazon EKSCAM.
-
Virtueller Cluster (VC) — logische Darstellung des in Amazon EKS erstellten Namespaces. Es ist ein 1:1 -Link zu einem EKS Amazon-Cluster-Namespace. Sie können es verwenden, um EMR Amazon-Workloads auf einem EKS Amazon-Cluster innerhalb des angegebenen Namespace auszuführen.
-
Namespace — Mechanismus zur Isolierung von Ressourcengruppen innerhalb eines einzelnen Clusters. EKS
-
Zugriffsrichtlinie — Berechtigungen, die einer IAM Rolle innerhalb eines EKS Clusters Zugriff und Aktionen gewähren.
-
Zugriffseintrag — ein Eintrag, der mit einer Rolle arn erstellt wurde. Sie können den Zugriffseintrag mit einer Zugriffsrichtlinie verknüpfen, um bestimmte Berechtigungen im EKS Amazon-Cluster zuzuweisen.
-
EKSAccess Entry Integrated Virtual Cluster — der virtuelle Cluster, der mithilfe von Access Entry API Operations von Amazon erstellt wurdeEKS.
Aktivieren Sie den Clusterzugriff mit aws-auth
Sie müssen Amazon EKS On-Zugriff EMR auf einen bestimmten Namespace in Ihrem Cluster gewähren, indem Sie die folgenden Aktionen ausführen: eine Kubernetes-Rolle erstellen, die Rolle an einen Kubernetes-Benutzer binden und den Kubernetes-Benutzer der serviceverknüpften Rolle zuordnen. AWSServiceRoleForAmazonEMRContainers
Diese Aktionen werden automatisiert, eksctl
wenn der Befehl zur IAM Identitätszuweisung zusammen mit dem Dienstnamen verwendet wird. emr-containers
Sie können diese Vorgänge einfach durchführen, indem Sie den folgenden Befehl verwenden.
eksctl create iamidentitymapping \ --cluster
my_eks_cluster
\ --namespacekubernetes_namespace
\ --service-name "emr-containers"
Ersetzen my_eks_cluster
mit dem Namen Ihres EKS Amazon-Clusters und ersetzen kubernetes_namespace
mit dem Kubernetes-Namespace, der für die Ausführung von Amazon-Workloads erstellt wurde. EMR
Wichtig
Sie müssen die neueste Version von eksctl mithilfe des vorherigen Schritts „Kubectl und eksctl einrichten“ herunterladen, um diese Funktionalität nutzen zu können.
Manuelle Schritte zur Aktivierung des Clusterzugriffs für Amazon EMR on EKS
Sie können auch die folgenden manuellen Schritte verwenden, um den Clusterzugriff für Amazon EMR on zu aktivierenEKS.
-
Erstellen Sie eine Kubernetes-Rolle in einem bestimmten Namespace
-
Eine Kubernetes-Rollenbindung mit Gültigkeitsbereich für den Namespace erstellen
Führen Sie den folgenden Befehl aus, um eine Kubernetes-Rollenbindung im angegebenen Namespace zu erstellen. Diese Rollenbindung gewährt einem Benutzer mit dem Namen
emr-containers
die in der im vorherigen Schritt erstellten Rolle definierten Berechtigungen. Dieser Benutzer identifiziert serviceverknüpfte Rollen für Amazon EMR on EKS und ermöglicht es Amazon EMR on so, Aktionen EKS auszuführen, die in der von Ihnen erstellten Rolle definiert sind.namespace=
my-namespace
cat - <<EOF | kubectl apply -f - --namespace "${namespace}" apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: emr-containers namespace: ${namespace} subjects: - kind: User name: emr-containers apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: emr-containers apiGroup: rbac.authorization.k8s.io EOF -
Aktualisieren Sie die
aws-auth
-Kubernetes-KonfigurationsübersichtSie können eine der folgenden Optionen verwenden, um die EKS serviceverknüpfte Rolle Amazon EMR on dem
emr-containers
Benutzer zuzuordnen, der im vorherigen Schritt an die Kubernetes-Rolle gebunden war.Option 1: Verwenden von
eksctl
Führen Sie den folgenden
eksctl
Befehl aus, um die mit Amazon EMR on EKS Service verknüpfte Rolle dememr-containers
Benutzer zuzuordnen.eksctl create iamidentitymapping \ --cluster
my-cluster-name
\ --arn "arn:aws:iam::my-account-id
:role/AWSServiceRoleForAmazonEMRContainers" \ --username emr-containersOption 2: Ohne eksctl zu verwenden
-
Führen Sie den folgenden Befehl aus, um die
aws-auth
-Konfigurationsübersicht im Texteditor zu öffnen.kubectl edit -n kube-system configmap/aws-auth
Anmerkung
Wenn Sie eine Fehlermeldung erhalten
Error from server (NotFound): configmaps "aws-auth" not found
, lesen Sie die Schritte unter Benutzerrollen hinzufügen im EKS Amazon-Benutzerhandbuch, um den Bestand zu übernehmen ConfigMap. -
Fügen Sie die EKS mit Amazon EMR on Service verknüpften Rollendetails zum
mapRoles
Abschnitt des hinzuConfigMap
, unterdata
. Fügen Sie diesen Abschnitt hinzu, wenn er nicht bereits in der Datei vorhanden sind. Der aktualisiertemapRoles
-Abschnitt unter Daten sieht wie das folgende Beispiel aus.apiVersion: v1 data: mapRoles: | - rolearn: arn:aws:iam::<your-account-id>:role/AWSServiceRoleForAmazonEMRContainers username: emr-containers - ... <other previously existing role entries, if there's any>.
-
Speichern Sie die Datei und beenden Sie den Text-Editor.
-