Über den Private-Cloud-Serviceendpunkt auf klassische Cluster zugreifen

Bei IBM Cloud Kubernetes Service Classic-Clustern, bei denen nur der Endpunkt für den Private-Cloud-Dienst aktiviert ist, müssen Sie den Master-Endpunkt über einen privaten NLB freigeben und über eine VPN-Verbindung mit dem klassischen privaten Netzwerk von IBM Cloud verbunden sein, um auf den Cluster zugreifen zu können.

Vorbereitende Schritte

  1. Installieren Sie die erforderlichen CLI-Tools.
  2. Richten Sie eine Virtual Private Network (VPN) for VPC-Verbindung zum klassischen privaten Netzwerk von IBM Cloud ein.
  3. Überprüfen Sie, ob Ihr Cluster einwandfrei funktioniert: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID.

Bereitstellung des Master-Endpunkts über einen privaten NLB

Bevor Sie über das private Netzwerk eine Verbindung zum Cluster-Master herstellen können, müssen Sie den Endpunkt des privaten Cloud-Dienstes über einen privaten NLB freigeben.

  1. Rufen Sie die URL und den Port des Private-Cloud-Serviceendpunkts für Ihren Cluster ab.

    ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID
    

    In dieser Beispielausgabe lautet der Wert für Private Service Endpoint URL https://c1.private.us-east.containers.cloud.ibm.com:25073.

    NAME:                           setest
    ID:                             b8dcc56743394fd19c9f3db7b990e5e3
    State:                          normal
    Status:                         healthy cluster
    Created:                        2019-04-25T16:03:34+0000
    Location:                       wdc04
    Master URL:                     https://c1.private.us-east.containers.cloud.ibm.com:25073
    Public Service Endpoint URL:    -
    Private Service Endpoint URL:   https://c1.private.us-east.containers.cloud.ibm.com:25073
    Master Location:                Washington D.C.
    ...
    
  2. Erstellen Sie eine YAML-Datei namens kube-api-via-nlb.yaml. Diese YAML-Datei erstellt einen privaten LoadBalancer-Service und macht den Private-Cloud-Serviceendpunkt durch diese NLB zugänglich. Ersetzen Sie <private_service_endpoint_port> durch den im vorherigen Schritt gefundenen Port.

    apiVersion: v1
    kind: Service
    metadata:
      name: kube-api-via-nlb
      annotations:
        service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: private
      namespace: default
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 8080 # Or, the <private_service_endpoint_port> that you found earlier.
        targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
    ---
    kind: Endpoints
    apiVersion: v1
    metadata:
      name: kube-api-via-nlb
    subsets:
      - addresses:
          - ip: 172.20.0.1
        ports:
          - port: 2040
    
  3. Damit Sie die private NLB erstellen können, müssen Sie mit dem Cluster-Master verbunden sein. Da Sie derzeit noch keine Verbindung über den privaten Cloud-Service-Endpunkt von einem VPN oder IBM Cloud Direct Link aus herstellen können, müssen Sie eine Verbindung zum Cluster-Master herstellen und den NLB mithilfe des öffentlichen Cloud-Service-Endpunkts oder eines Dashboards erstellen.

    • Wenn Sie nur den Endpunkt für den Private-Cloud-Dienst aktiviert haben, können Sie das Headlamp-Dashboard verwenden, um den NLB anzulegen. Headlamp leitet alle Anfragen an den Endpunkt des privaten Cloud-Dienstes des Masters weiter.

      1. Klicken Sie auf der Seite Cluster auf den Cluster, auf den Sie zugreifen möchten.
      2. Holen Sie sich Ihre Ingress-Subdomain: ibmcloud ks cluster get -c CLUSTER_NAME_OR_ID | grep "Ingress Subdomain".
      3. Öffnen Sie die Seite in https://headlamp.<ingress_subdomain> einem Browser, melden Sie sich an und navigieren Sie zu + > YAML hochladen.
      4. Laden Sie die Datei kube-api-via-nlb.yaml hoch und klicken Sie auf Übernehmen.
      5. Navigieren Sie zu Netzwerk > Dienste, überprüfen Sie, ob der Dienst kube-api-via-nlb angelegt wurde, und notieren Sie sich die Adresse 10.x.x.xExterne IP-Adresse. Diese IP-Adresse macht den Private-Cloud-Serviceendpunkt für den Kubernetes-Master an dem Port zugänglich, den Sie in Ihrer YAML-Datei angegeben haben.
    • Wenn Sie auch den Public-Cloud-Serviceendpunkt aktiviert haben, haben Sie bereits Zugriff auf den Master.

      1. Laden Sie die Konfigurationsdatei kubeconfig für Ihren Cluster herunter und fügen Sie sie zu Ihrer vorhandenen Datei kubeconfig in ~/.kube/config oder zur letzten Datei in der Umgebungsvariablen KUBECONFIG hinzu.
        ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID
        
      2. Erstellen Sie die NLB und den Endpunkt.
        kubectl apply -f kube-api-via-nlb.yaml
        
      3. Überprüfen Sie, ob die NLB kube-api-via-nlb erstellt wurde. Notieren Sie die Adresse 10.x.x.x unter EXTERNAL-IP in der Ausgabe. Diese IP-Adresse macht den Private-Cloud-Serviceendpunkt für den Kubernetes-Master an dem Port zugänglich, den Sie in Ihrer YAML-Datei angegeben haben.
        kubectl get svc -o wide
        
        In dieser Beispielausgabe lautet die IP-Adresse für den Private-Cloud-Serviceendpunkt des Kubernetes-Masters 10.186.92.42.
        NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)          AGE   SELECTOR
        kube-api-via-nlb         LoadBalancer   172.21.150.118   10.186.92.42     443:32235/TCP    10m   <none>
        ...
        
  4. Fügen Sie auf den Clientmaschinen, auf denen Sie oder Ihre Benutzer kubectl-Befehle ausführen, die NLB-IP-Adresse und die URL des Private-Cloud-Serviceendpunkts zur Datei /etc/hosts hinzu. Schließen Sie keine Ports in die IP-Adresse und URL ein und schließen Sie https:// nicht in die URL ein.

    • Für macOS- und Linux-Benutzer:
        sudo nano /etc/hosts
        ```
    * Für Windows-Benutzer:
    ```sh {: pre}
        notepad C:\Windows\System32\drivers\etc\hosts
        ```
        Abhängig von Ihren Berechtigungen für die lokale Maschine müssen Sie Notepad als Administrator ausführen, um die Datei 'hosts' bearbeiten zu können.
    
        ```sh {: codeblock}
        10.186.92.42  c1.private.us-east.containers.cloud.ibm.com
        ```
    
  5. Stellen Sie sicher, dass Sie über eine VPN- oder IBM Cloud Direct Link-Verbindung mit dem privaten Netz verbunden sind.

  6. Laden Sie die Konfigurationsdatei kubeconfig für Ihren Cluster herunter und fügen Sie sie zu Ihrer vorhandenen Datei kubeconfig in ~/.kube/config oder zur letzten Datei in der Umgebungsvariablen KUBECONFIG hinzu.

    ibmcloud ks cluster config -c CLUSTER_NAME_OR_ID --endpoint private
    
  7. Überprüfen Sie, ob kubectl-Befehle ordnungsgemäß ausgeführt werden und ob der Kubernetes-Kontext auf Ihren Cluster gesetzt ist.

    kubectl config current-context
    

    Beispielausgabe

    <cluster_name>/<cluster_ID>