Clusterzugriff einrichten

Erfahren Sie, wie Sie den Zugriff auf die Cluster einrichten, die Sie mit der Kubernetes Engine (OKE) erstellen. Nachdem Sie die Schritte ausgeführt haben, können Sie das Cluster mit dem Befehlszeilentool kubectl verwalten.

Für den Zugriff auf ein Cluster mit kubectl müssen Sie eine Kubernetes-Konfigurationsdatei (häufig als kubeconfig-Datei bezeichnet) für das Cluster einrichten. Die kubeconfig-Datei (standardmäßig unter dem Namen config im Verzeichnis $HOME/.kube gespeichert) stellt die erforderlichen Details für den Zugriff auf das Cluster bereit. Nachdem Sie die kubeconfig-Datei eingerichtet haben, können Sie das Cluster mit kubectl verwalten.

Die Schritte beim Einrichten der kubeconfig-Datei hängen davon ab, wie Sie auf das Cluster zugreifen möchten:

  • Um mit kubectl in Cloud Shell auf das Cluster zuzugreifen, führen Sie einen Oracle Cloud Infrastructure-CLI-Befehl im Cloud Shell-Fenster aus, um die kubeconfig-Datei einzurichten.

    Siehe Cloud Shell-Zugriff auf Cluster einrichten.

  • So greifen Sie mit einer lokalen kubectl-Installation auf das Cluster zu:

    • Generieren Sie ein API-Signaturschlüsselpaar (sofern noch kein Paar vorhanden ist).
    • Laden Sie den Public Key des API-Signaturschlüsselpaars hoch.
    • Installieren und konfigurieren Sie die Oracle Cloud Infrastructure-CLI.
    • Richten Sie die kubeconfig-Datei ein.

    Siehe Lokalen Zugriff auf Cluster einrichten.

Cloud Shell-Zugriff auf Cluster einrichten

Wenn der Kubernetes-API-Endpunkt eines Clusters eine öffentliche IP-Adresse aufweist, können Sie auf das Cluster in Cloud Shell zugreifen, indem Sie eine kubeconfig-Datei einrichten.

Hinweis

Um auf ein Cluster mit einem privaten Kubernetes-API-Endpunkt in Cloud Shell zuzugreifen, können Sie eine Bastion mit dem Oracle Cloud Infrastructure Bastion-Service konfigurieren. Weitere Informationen finden Sie unter Bastion für Clusterzugriff einrichten.

So richten Sie die kubeconfig-Datei ein:

Schritt 1: Richten Sie die kubeconfig-Datei ein
  1. Wählen Sie auf der Listenseite Cluster den Namen des Clusters, auf den Sie mit kubectl zugreifen möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter Cluster auflisten.
  2. Wählen Sie die Schaltfläche Auf Cluster Zugriff, um das Dialogfeld Auf Cluster Zugriff anzuzeigen.
  3. Wählen Sie Cloud Shell-Zugriff aus.
  4. Wählen Sie Cloud Shell starten aus, um das Cloud Shell-Fenster anzuzeigen. Weitere Informationen zu Cloud Shell (einschließlich der erforderlichen IAM-Policy) finden Sie unter Cloud Shell.
  5. Führen Sie den Oracle Cloud Infrastructure-CLI-Befehl zum Einrichten der kubeconfig-Datei aus, und speichern Sie diese in einem Speicherort, der für kubectl zugänglich ist.

    Beispiel: Geben Sie den folgenden Befehl in das Cloud Shell-Fenster ein (bzw. kopieren Sie ihn aus dem Dialogfeld Auf das Cluster zugreifen, und fügen Sie ihn ein):

    oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config  --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT

    Hierbei gilt:

    • ocid1.cluster.oc1.phx.aaaaaaaaae... ist die OCID des aktuellen Clusters. Der Befehl im Dialogfeld Auf das Cluster zugreifen enthält bereits die OCID des Clusters.
    • --kube-endpoint PUBLIC_ENDPOINT gibt an, dass die öffentliche IP-Adresse des Kubernetes-API-Endpunkts des Clusters der kubeconfig-Datei hinzugefügt werden soll. Weitere Informationen finden Sie unter Kubernetes-Cluster-Control-Plane und Kubernetes-API.

    Wenn schon eine kubeconfig-Datei in dem von Ihnen angegebenen Verzeichnis vorhanden ist, werden Details über das Cluster als neuer Kontext zu der bestehenden kubeconfig-Datei hinzugefügt. Das Element current-context: in der kubeconfig-Datei wird so eingestellt, dass es auf den neu hinzugefügten Kontext verweist.

    Tipp

    Bei Zwischenablagevorgängen im Cloud Shell-Fenster können Windows-Benutzer STRG-C oder STRG-EINFG für das Kopieren und UMSCHALT-EINFG für das Einfügen verwenden. MacOS-Benutzer können Cmd-C zum Kopieren und Cmd-V zum Einfügen verwenden.
  6. Wenn Sie die kubeconfig-Datei nicht im Standardspeicherort ($HOME/.kube) oder nicht mit dem Standardnamen (config) speichern, legen Sie den Wert der Umgebungsvariable KUBECONFIG so fest, dass er auf den Namen und Speicherort der kubeconfig-Datei verweist. Beispiel: Geben Sie den folgenden Befehl im Cloud Shell-Fenster ein:

    export KUBECONFIG=$HOME/.kube/config
Schritt 2: Prüfen Sie, ob kubectl auf das Cluster zugreifen kann

Prüfen Sie, ob kubectl eine Verbindung zum Cluster herstellen kann, indem Sie den folgenden Befehl im Cloud Shell-Fenster eingeben:

$ kubectl get nodes

Es werden Informationen über die Knoten im Cluster angezeigt.

Sie können jetzt mit kubectl Vorgänge im Cluster ausführen.

Lokalen Zugriff auf Cluster einrichten

Wenn der Kubernetes-API-Endpunkt eines Clusters keine öffentliche IP-Adresse aufweist, können Sie von einem lokalen Terminal auf das Cluster zugreifen, wenn Ihr Netzwerk per Peering mit dem VCN des Clusters verbunden ist.

Hinweis

Um von einem lokalen Terminal aus auf ein Cluster mit einem privaten Kubernetes-API-Endpunkt zuzugreifen, können Sie auch eine Bastion mit dem Oracle Cloud Infrastructure Bastion-Service konfigurieren. Weitere Informationen finden Sie unter Bastion für Clusterzugriff einrichten.

So richten Sie die kubeconfig-Datei ein:

Schritt 1: API-Signaturschlüsselpaar generieren

Wenn bereits ein API-Signaturschlüsselpaar vorhanden ist, gehen Sie direkt zum nächsten Schritt. Wenn nicht:

  1. Mit OpenSSL-Befehlen können Sie das Schlüsselpaar im erforderlichen PEM-Format generieren. Unter Windows müssen Sie Git Bash für Windows installieren und die Befehle mit diesem Tool ausführen. Siehe So generieren Sie einen API-Signaturschlüssel.
  2. Kopieren Sie den Inhalt des Public Keys in die Zwischenablage (Sie müssen den Wert später in die Konsole einfügen).

Schritt 2: Public Key des API-Signaturschlüsselpaars hochladen
  1. So zeigen Sie die Details an: Wählen Sie im Navigationsmenü das Menü Profil Symbol für Profilmenü aus, und wählen Sie je nach der angezeigten Option Benutzereinstellungen oder Mein Profil aus.

  2. Wählen Sie Public Key hinzufügen aus.

  3. Einfügen Sie den Wert des Public Keys in das Fenster, und wählen Sie Hinzufügen.

    Der Schlüssel wird hochgeladen, und sein Fingerprint wird angezeigt (Beispiel: d1:b2:32:53:d3:5f:cf:68:2d:6f:8b:5f:77:8f:07:13).

Schritt 3: Oracle Cloud Infrastructure-CLI installieren und konfigurieren
  1. Installieren Sie in Oracle Cloud Infrastructure die CLI-Version 2.6.4 (oder höher). Siehe CLI installieren.

  2. Konfigurieren Sie die Oracle Cloud Infrastructure-CLI. Siehe CLI konfigurieren.
Schritt 4: Richten Sie die kubeconfig-Datei ein
  1. Wählen Sie auf der Listenseite Cluster den Namen des Clusters, auf den Sie mit kubectl zugreifen möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter Cluster auflisten.
  2. Wählen Sie die Schaltfläche Auf Cluster Zugriff, um das Dialogfeld Auf Cluster Zugriff anzuzeigen.

  3. Wählen Sie Lokaler Zugriff aus.
  4. Erstellen Sie ein Verzeichnis, das die kubeconfig-Datei enthalten soll. Der erwartete Verzeichnisname lautet standardmäßig $HOME/.kube.

    Beispiel: Geben Sie in Linux den folgenden Befehl in ein lokales Terminalfenster ein (bzw. kopieren Sie ihn aus dem Dialogfeld Auf das Cluster zugreifen, und fügen Sie ihn ein):

    mkdir -p $HOME/.kube
  5. Führen Sie den Oracle Cloud Infrastructure-CLI-Befehl zum Einrichten der kubeconfig-Datei aus, und speichern Sie diese in einem Speicherort, der für kubectl zugänglich ist.

    Beispiel: Geben Sie in Linux den folgenden Befehl in ein lokales Terminalfenster ein (bzw. kopieren Sie ihn aus dem Dialogfeld Auf das Cluster zugreifen, und fügen Sie ihn ein):

    oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config  --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT

    Hierbei gilt:

    • ocid1.cluster.oc1.phx.aaaaaaaaae... ist die OCID des aktuellen Clusters. Der Befehl im Dialogfeld Auf das Cluster zugreifen enthält bereits die OCID des Clusters.
    • --kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT gibt an, ob die private IP-Adresse oder die öffentliche IP-Adresse des Kubernetes-API-Endpunkts des Clusters zur kubeconfig-Datei hinzugefügt werden soll. Weitere Informationen finden Sie unter Kubernetes-Cluster-Control-Plane und Kubernetes-API.

    Wenn schon eine kubeconfig-Datei in dem von Ihnen angegebenen Verzeichnis vorhanden ist, werden Details über das Cluster als neuer Kontext zu der bestehenden kubeconfig-Datei hinzugefügt. Das Element current-context: in der kubeconfig-Datei wird so eingestellt, dass es auf den neu hinzugefügten Kontext verweist.

  6. Wenn Sie die kubeconfig-Datei nicht im Standardspeicherort ($HOME/.kube) oder nicht mit dem Standardnamen (config) speichern, legen Sie den Wert der Umgebungsvariable KUBECONFIG so fest, dass er auf den Namen und Speicherort der kubeconfig-Datei verweist. Beispiel: Geben Sie in Linux den folgenden Befehl in ein lokales Terminalfenster ein (bzw. kopieren Sie ihn aus dem Dialogfeld Auf das Cluster zugreifen, und fügen Sie ihn ein):

    export KUBECONFIG=$HOME/.kube/config
Schritt 5: Prüfen Sie, ob kubectl auf das Cluster zugreifen kann
  1. Prüfen Sie, ob kubectl verfügbar ist, indem Sie den folgenden Befehl in einem lokalen Terminalfenster eingeben:

    kubectl version

    Die Antwort zeigt Folgendes an:

    • Die installierte und lokal ausgeführte kubectl-Version
    • Die Kubernetes-Version (genau genommen die Version von kube-apiserver), die auf den Control-Plane-Knoten des Clusters ausgeführt wird

    Hinweis: Die kubectl-Version darf maximal eine Nebenversion älter oder neuer sein als die auf den Control-Plane-Knoten ausgeführte Kubernetes-Version. Wenn kubectl um mehr als eine Nebenversion älter oder neuer ist, installieren Sie eine entsprechende kubectl-Version. Weitere Informationen finden Sie in der Policy zu unterstützten Kubernetes-Versionen und Versionsabweichungen in der Kubernetes-Dokumentation.

    Wenn der Befehl einen Fehler zurückgibt, der angibt, dass kubectl nicht verfügbar ist, installieren Sie kubectl (siehe kubectl-Dokumentation), und wiederholen Sie diesen Schritt.

  2. Prüfen Sie, ob kubectl eine Verbindung zum Cluster herstellen kann, indem Sie den folgenden Befehl in einem lokalen Terminalfenster eingeben:

    kubectl get nodes

    Es werden Informationen über die Knoten im Cluster angezeigt.

    Sie können jetzt mit kubectl Vorgänge im Cluster ausführen.

Hinweise zu kubeconfig-Dateien

Beachten Sie die folgenden Punkte zu kubeconfig-Dateien:

  • Eine einzelne kubeconfig-Datei kann die Details für mehrere Cluster in Form von mehreren Kontexten enthalten. Das Cluster, in dem Vorgänge ausgeführt werden, wird vom Element current-context: in der kubeconfig-Datei angegeben.
  • Eine kubeconfig-Datei umfasst einen Oracle Cloud Infrastructure-CLI-Befehl, mit dem ein Authentifizierungstoken dynamisch generiert und eingefügt wird, wenn Sie einen kubectl-Befehl ausführen. Die Oracle Cloud Infrastructure-CLI muss im ausführbaren Pfad der Shell verfügbar sein (Beispiel: $PATH unter Linux).
  • Die mit dem Oracle Cloud Infrastructure-CLI-Befehl in der kubeconfig-Datei generierten Authentifizierungstoken besitzen eine kurze Lebensdauer und gelten nur für bestimmte Cluster und einzelne Benutzer. Daher können kubeconfig-Dateien für den Zugriff auf Kubernetes-Cluster nicht von mehreren Benutzern gemeinsam verwendet werden.
  • Der Oracle Cloud Infrastructure-CLI-Befehl in der kubeconfig-Datei verwendet beim Generieren eines Authentifizierungstokens Ihr aktuelles CLI-Profil. Wenn Sie mehrere Profile in verschiedenen Mandanten in der CLI-Konfigurationsdatei definiert haben (Beispiel: in ~/.oci/config), geben Sie wie folgt an, welches Profil bei der Generierung des Authentifizierungstokens verwendet werden soll. In beiden Fällen ist <profile-name> der Name des Profils, das in der CLI-Konfigurationsdatei definiert ist:

    • Fügen Sie --profile im Abschnitt args: der kubeconfig-Datei wie folgt hinzu:

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          - --profile
          - <profile-name>
          command: oci
          env: []
    • Legen Sie für die OCI_CLI_PROFILE-Umgebungsvariable den Namen des in der CLI-Konfigurationsdatei definierten Profils fest, bevor Sie kubectl-Befehle ausführen. Beispiel:

      
      export OCI_CLI_PROFILE=<profile-name>
      
      kubectl get nodes
      
  • Die vom Oracle Cloud Infrastructure-CLI-Befehl in der kubeconfig-Datei generierten Authentifizierungstoken eignen sich für die Authentifizierung einzelner Benutzer, die mit kubectl auf das Cluster zugreifen. Die generierten Authentifizierungstoken sind jedoch nicht geeignet, wenn andere Prozesse und Tools auf das Cluster zugreifen sollen, wie Tools für kontinuierliche Integration und Bereitstellung (CI/CD). In diesem Fall sollten Sie einen Kubernetes-Serviceaccount erstellen und das zugehörige Authentifizierungstoken der kubeconfig-Datei hinzufügen. Weitere Informationen finden Sie unter Authentifizierungstoken von Serviceaccount zu einer Kubeconfig-Datei hinzufügen.
  • Möglicherweise wurde eine IAM-Policy definiert, um den Clusterzugriff auf Benutzer zu beschränken, die mit der Multifaktor-Authentifizierung (MFA) verifiziert wurden. Wenn eine solche Policy vorhanden ist, müssen Sie der kubeconfig-Datei die Argumente --profile und --auth hinzufügen, damit ein MFA-verifizierter Benutzer wie folgt mit kubectl auf das Cluster zugreifen kann. In beiden Fällen ist <profile-name> der Name des von MFA verifizierten Benutzerprofils, das in der Oracle Cloud Infrastructure-CLI-Konfigurationsdatei definiert ist:

    • Fügen Sie die folgenden Argumente zum Abschnitt args: der kubeconfig-Datei hinzu:

      
          - --profile
          - <profile-name>
          - --auth
          - security_token

      Beispiel:

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          - --profile
          - <profile-name>
          - --auth
          - security_token
          command: oci
          env: []
    • Legen Sie für die Umgebungsvariable OCI_CLI_PROFILE den Namen des in der CLI-Konfigurationsdatei definierten MFA-verifizierten Benutzerprofils fest, bevor Sie kubectl-Befehle ausführen. Beispiel:

      
      export OCI_CLI_PROFILE=<profile-name>
      
      kubectl get nodes
      

    Nach dem Aktualisieren der kubeconfig-Datei muss der Benutzer, mit dem Sie auf das Cluster zugreifen, MFA-verifiziert sein. Wenn Sie versuchen, mit einem Benutzer auf das Cluster zuzugreifen, der nicht von MFA verifiziert wurde, wird die Meldung error: You must be logged in to the server (Unauthorized) angezeigt.

    Weitere Informationen zu MFA-verifizierten Benutzern finden Sie unter Multifactor-Authentifizierung verwalten.

kubeconfig-Dateien von Version 1.0.0 auf Version 2.0.0 upgraden

Die Kubernetes-Engine unterstützt derzeit Dateien der kubeconfig-Version 2.0.0 und unterstützt keine Dateien der kubeconfig-Version 1.0.0 mehr.

Die Verbesserungen von kubeconfig-Dateien der Version 2.0.0 umfassen Sicherheitsverbesserungen für die Kubernetes-Umgebung, darunter kurzlebige, auf bestimmte Cluster ausgelegte Token mit automatischer Aktualisierung und Unterstützung für Instanz-Principals für den Zugriff auf Kubernetes-Cluster. Darüber hinaus werden auf Anforderung für jedes Cluster Authentifizierungstoken generiert, sodass kubeconfig-Dateien der Version 2.0.0 von Benutzern nicht gemeinsam für den Zugriff auf Kubernetes-Cluster verwendet werden können (im Gegensatz zu kubeconfig-Dateien der Version 1.0.0).

Beachten Sie, dass Dateien der kubeconfig-Version 2.0.0 nicht mit kubectl-Versionen vor Version 1.11.9 kompatibel sind. Wenn Sie derzeit kubectl Version 1.10.x oder niedriger ausführen, nehmen Sie ein Upgrade von kubectl auf Version 1.11.9 oder höher vor. Weitere Informationen zur Kompatibilität zwischen verschiedenen Versionen von Kubernetes und kubectl finden Sie in der Kubernetes-Dokumentation.

Befolgen Sie die Anweisungen unten, um die aktuelle Version der kubeconfig-Dateien zu bestimmen und zu erfahren, wie Sie ein Upgrade aller verbleibenden Dateien der kubeconfig-Version 1.0.0 auf Version 2.0.0. durchführen.

kubeconfig-Dateiversion bestimmen

So bestimmen Sie die Version der kubeconfig-Datei eines Clusters:

1. Geben Sie in einem Terminalfenster (dem Cloud Shell-Fenster oder einem lokalen Terminalfenster) den folgenden Befehl ein, um das Format der kubeconfig-Datei anzuzeigen, die derzeit von der Umgebungsvariablen KUBECONFIG referenziert wird:

kubectl config view

2. Wenn die kubeconfig-Datei die Version 1.0.0 aufweist, wird eine Antwort im folgenden Format angezeigt:

users:
- name: <username>
  user:
    token: <token-value>

Wenn eine Antwort im obigen Format angezeigt wird, müssen Sie ein Upgrade der kubeconfig-Datei durchführen. Weitere Informationen finden Sie unter kubeconfig-Dateien von Version 1.0.0 auf Version 2.0.0 upgraden.

3. Wenn die kubeconfig-Datei Version 2.0.0 aufweist, wird eine Antwort im folgenden Format angezeigt:

user:
  exec:
    apiVersion: client.authentication.k8s.io/v1beta1
    args:
    - ce
    - cluster
    - generate-token
    - --cluster-id
    - <cluster ocid>
    command: oci
    env: []

Wenn eine Antwort im obigen Format angezeigt wird, ist keine weitere Aktion erforderlich.

kubeconfig-Datei der Version 1.0.0 auf Version 2.0.0 upgraden

So upgraden Sie eine kubeconfig-Datei der Version 1.0.0:

  1. Bei einer lokalen Installation von kubectl bestätigen Sie, dass die Oracle Cloud Infrastructure-CLI-Version 2.6.4 (oder höher) installiert ist, indem Sie Folgendes eingeben:

    oci -version

    Wenn die CLI-Version von Oracle Cloud Infrastructure älter ist als die Version 2.6.4, führen Sie ein Upgrade der CLI auf eine spätere Version durch. Siehe CLI upgraden.

  2. Befolgen Sie die entsprechenden Anweisungen, um die kubeconfig-Datei zur Verwendung in Cloud Shell oder lokal einzurichten (siehe Cloud Shell-Zugriff auf Cluster einrichten oder Lokalen Zugriff auf Cluster einrichten). Durch Ausführen des Befehls oci ce cluster create-kubeconfig, der im Dialogfeld Auf das Cluster zugreifen dargestellt ist, wird ein Upgrade der vorhandenen kubeconfig-Datei der Version 1.0.0 durchgeführt. Wenn Sie den Namen oder Speicherort der kubeconfig-Datei ändern, legen Sie die Umgebungsvariable KUBECONFIG so fest, dass sie auf den neuen Namen und Speicherort der Datei verweist.

  3. Bestätigen Sie, dass die kubeconfig-Datei jetzt in der Version 2.0.0 vorliegt:
    1. Geben Sie in einem Terminalfenster (dem Cloud Shell-Fenster oder einem lokalen Terminalfenster) Folgendes ein:

      kubectl config view
    2. Prüfen Sie, ob die Antwort im folgenden Format vorliegt:

      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1
          args:
          - ce
          - cluster
          - generate-token
          - --cluster-id
          - <cluster ocid>
          command: oci
          env: []