Erstellen Sie ein kubeconfig
für Amazon EKS
In diesem Abschnitt erstellen Sie eine kubeconfig
-Datei für Ihren Cluster (oder aktualisieren eine vorhandene).
Dieser Abschnitt bietet zwei Verfahren zum Erstellen oder Aktualisieren Ihrer kubeconfig
-Datei. Sie können eine kubeconfig
-Datei schnell über den AWS CLI-Befehl update-kubeconfig
automatisch erstellen oder aktualisieren, indem Sie die AWS CLI verwenden. Sie können eine kubeconfig
-Datei auch manuell über die AWS CLI oder den aws-iam-authenticator
erstellen.
Amazon EKS verwendet den aws eks get-token
-Befehl, der in Version 1.16.156 oder höher von AWS CLI oder AWS IAM Authenticator für Kuberneteskubectl
für die Cluster-Authentifizierung verfügbar ist. Wenn Sie die AWS CLI auf Ihrem System installiert haben, verwendet der AWS-IAM-Authenticator für Kubernetes standardmäßig die gleichen Anmeldeinformationen, die mit dem folgenden Befehl zurückgegeben werden:
aws sts get-caller-identity
Weitere Informationen finden Sie unter Konfigurieren der AWS CLI im AWS Command Line Interface-Leitfaden.
kubeconfig
-Datei automatisch erstellen
So erstellen Sie eine kubeconfig
-Datei mit der AWS CLI
-
Stellen Sie sicher, dass die AWS CLI-Version 1.16.156 oder höher installiert ist. Informationen zum Installieren oder Aktualisieren des AWS CLI finden Sie unter Installieren des AWS CLI im AWS Command Line Interface-Benutzerhandbuch.
Anmerkung Die Python-Version Ihres Systems muss 2.7.9 oder höher sein. Andernfalls erhalten Sie
hostname doesn't match
-Fehler mit AWS CLI-Aufrufen an Amazon EKS.Sie können Ihre AWS CLI-Version mit dem folgenden Befehl überprüfen:
aws --version
Wichtig Mehrere Versionen der AWS CLI basieren häufig auf Paket-Managern wie
yum
,apt-get
oder Homebrew für macOS. Um sicherzustellen, dass Sie über die neueste Version verfügen, lesen Sie Installieren von AWS CLI im AWS Command Line Interface-Benutzerhandbuch. -
Erstellen oder aktualisieren Sie eine
kubeconfig
-Datei für Ihren Cluster. Ersetzen Sie dieBeispielwerte
durch Ihre eigenen Werte.-
Standardmäßig wird die resultierende Konfigurationsdatei im Standard
kubeconfig
-Pfad (.kube/config
) in Ihrem Stammverzeichnis erstellt oder mit einer vorhandenenkubeconfig
-Datei an diesem Speicherort zusammengeführt. Sie können mit der Option--kubeconfig
einen anderen Pfad angeben. -
Sie können einen IAM-Rollen-ARN mit der Option
--role-arn
für die Authentifizierung verwenden, wenn Siekubectl
-Befehle ausgeben. Andernfalls wird die IAM-Entität in Ihrer standardmäßigen AWS CLI- oder SDK-Anmeldedatenkette verwendet. Sie können Ihre standardmäßige AWS CLI - oder SDK-Identität anzeigen, indem Sie den Befehlaws sts get-caller-identity
ausführen. -
Weitere Informationen finden Sie auf der Hilfeseite mit dem
aws eks update-kubeconfig help
-Befehl oder unter update-kubeconfig in der AWS CLI-Befehlsreferenz.
Anmerkung Um den folgenden Befehl auszuführen, müssen Sie über die Berechtigung verfügen, die API-Aktion
eks:DescribeCluster
mit dem angegebenen Cluster zu verwenden. Weitere Informationen finden Sie unter Beispiele für identitätsbasierte Amazon-EKS-Richtlinien.aws eks update-kubeconfig --region
region-code
--namecluster-name
-
-
Testen Sie Ihre Konfiguration.
kubectl get svc
Anmerkung Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Abschnitt zur Fehlerbehebung.
Ausgabe:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
Manuelles Erstellen der kubeconfig
So erstellen Sie Ihre kubeconfig
-Datei manuell
-
Rufen Sie den Endpunkt für Ihren Cluster ab. Ersetzen Sie die
Beispielwerte
durch die Werte für Ihren Cluster.aws eks describe-cluster \ --region
region-code
\ --namemy-cluster
\ --query "cluster.endpoint" \ --output textAusgabe
https://
E0EED553387FD639757D97A76EXAMPLE
.gr7
.region-code
.eks.amazonaws.com -
Rufen Sie die Base64-kodierten Zertifikatsdaten ab, die für die Kommunikation mit Ihrem Cluster erforderlich sind.
aws eks describe-cluster \ --region
region-code
\ --namemy-cluster
\ --query "cluster.certificateAuthority.data" \ --output textDie Ausgabe ist eine sehr lange Zeichenfolge.
-
Erstellen Sie das
~/.kube
-Standardverzeichnis, wenn es nicht bereits vorhanden ist.mkdir -p ~/.kube
-
Kopieren Sie den Inhalt aus einem der folgenden Codeblöcke (abhängig von Ihrer bevorzugten Client-Token-Methode) mit Ihrem Texteditor.
-
So verwenden Sie den AWS CLI-Befehl
aws eks get-token
(erfordert die AWS CLI-Version 1.16.156 oder höher).apiVersion: v1 clusters: - cluster: server:
endpoint
certificate-authority-data:certificate-data
name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws args: - "eks" - "get-token" - "--cluster-name" - "cluster-name
" # - "--role-arn" # - "role-arn
" # env: # - name: AWS_PROFILE # value: "aws-profile
" -
So verwenden Sie den AWS IAM Authenticator für Kubernetes
: apiVersion: v1 clusters: - cluster: server:
endpoint
certificate-authority-data:certificate-data
name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "cluster-name
" # - "-r" # - "role-arn
" # env: # - name: AWS_PROFILE # value: "aws-profile
"
-
-
Ersetzen Sie
Endpunkt
mit dem Endpunkt, den Sie in einem vorherigen Schritt erhalten haben. -
Ersetzen Sie
certificate-data
mit den Base64-kodierten Zertifikatsdaten, die Sie in einem vorherigen Schritt erhalten haben. -
Ersetzen Sie den
cluster-name
durch Ihren Cluster-Namen. -
(Optional) Damit eine IAM-Rolle für die Durchführung von Clustervorgängen statt der standardmäßigen AWS-Kette von Anmeldeinformationsanbieter angenommen werden kann, kommentieren Sie die Zeilen
-r
undrole-arn
und ersetzen Sie sie durch einen IAM-Rollen-ARN, den Sie mit Ihrem Benutzer verwenden können. -
Speichern Sie die Datei im Standard-
kubectl
-Ordner mit Ihrem Cluster-Namen im Dateinamen. Wenn Ihr Cluster-Name beispielsweisemy-cluster
lautet, speichern Sie die Datei unter~/.kube/config-
.my-cluster
-
Fügen Sie den Dateipfad zu Ihrer
KUBECONFIG
-Umgebungsvariable hinzu, sodasskubectl
weiß, wo er nach der Cluster-Konfiguration suchen soll.-
Für Bash-Shells unter macOS oder Linux:
export KUBECONFIG=$KUBECONFIG:~/.kube/config-
my-cluster
-
Für PowerShell unter Windows:
$ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-
my-cluster
"
-
-
(Optional) Fügen Sie die Konfiguration zu Ihrer Shell-Initialisierungsdatei hinzu, um den Pfad bereits beim Öffnen einer Shell zu konfigurieren.
-
Für Bash-Shells unter macOS:
echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-
my-cluster
' >> ~/.bash_profile -
Für Bash-Shells unter Linux:
echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-
my-cluster
' >> ~/.bashrc -
Für PowerShell unter Windows:
[System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
-
-
Testen Sie Ihre Konfiguration.
kubectl get svc
Anmerkung Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Abschnitt zur Fehlerbehebung.
Ausgabe:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m