Stellen Sie mithilfe von kubectl eine Verbindung zum Remote-Minikube-Cluster her

Stellen Sie mithilfe von kubectl eine Verbindung zum Remote-Minikube-Cluster her

Ich möchte herausfinden, ob ich mit lokalem (Mac) kubectl eine Verbindung zu einem Remote-Minikube-Cluster (Ubuntu-Box) herstellen kann. Ich verwende derzeit Docker und kann dies ganz einfach mit tun docker-machine. Führen Sie einfach eine Auswertung zum Computernamen durch, und Docker verwendet den Remote-Computer.

Ich habe mich gefragt, ob es etwas Ähnliches für Minikube/Kubectl gibt. Ich habe ein paar Artikel gefunden, in denen erwähnt wird, dass ich mein Remote-Verzeichnis in mein lokales Verzeichnis kopieren ~/.minikubeund einige Konfigurationen ändern muss. Aber das scheint ziemlich kompliziert für etwas, was ein Tool wie dieses docker-machineproblemlos erledigt.

Gibt es ein ähnliches Tool, oder könnte mir, falls nicht, jemand bei den erforderlichen Schritten für die Verbindung mit einem Remote-Cluster helfen?

Remote-Computer Derzeit verwende ich den dockerTreiber (dies ist die vollständige Ausgabe des Befehls, nur die eine Zeile):

$ minikube config view
- driver: docker

Und verfügen über eine Reihe von NodePortDienstleistungen:

$ kubectl get service -A
NAMESPACE     NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       apigateway        NodePort    10.100.122.255   <none>        8080:30601/TCP           19h
default       discoveryserver   NodePort    10.101.106.231   <none>        8761:30602/TCP           19h
default       elasticsearch     NodePort    10.97.197.14     <none>        9200:30604/TCP           19h
default       harness           NodePort    10.97.233.245    <none>        9090:30603/TCP           19h
default       kubernetes        ClusterIP   10.96.0.1        <none>        443/TCP                  19h
default       mongo             NodePort    10.97.172.108    <none>        27017:32625/TCP          19h
kube-system   kube-dns          ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   19h
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/meanwhileinhell/.minikube/ca.crt
    server: https://192.168.50.2:8443   <<<<<< `minikube ip`
  name: minikube
contexts:
- context:
    cluster: minikube
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /home/meanwhileinhell/.minikube/profiles/minikube/client.crt
    client-key: /home/meanwhileinhell/.minikube/profiles/minikube/client.key

Lokale Maschine

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    certificate-authority: /Users/mih.mac/remote/.minikube/ca.crt
    server: https://192.168.1.5:8443   <<<<<< Static IP of my remote machine
  name: minikube
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: minikube
    user: minikube
  name: minikube
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
- name: minikube
  user:
    client-certificate: /Users/mih.mac/remote/.minikube/client.crt
    client-key: /Users/mih.mac/remote/.minikube/client.key

Antwort1

Es ist kein Tool verfügbar. Der Fernzugriff auf Minikube erfolgt über SSH-Tunneling.

1- Sie müssen in der Lage sein, vom Mac per SSH auf die Ubuntu-Box zuzugreifen.

2- Fügen Sie entsprechende SSH-Portweiterleitungsflags hinzu. Führen Sie den folgenden Befehl aus

ssh -N -p 22 <user>@<public_ip> -L 127.0.0.1:18443:<minikube_ip>:8443

Wo:

Benutzer ist Ihr Name

public_ip ist die öffentliche IP Ihres Servers

minikube_ip ist die IP-Adresse von Minikube. Sie können sie auf dem Server mit dem Befehl „minikube ip“ finden. Wahrscheinlich lautet sie 192.168.49.2.

3- Geben Sie dann einfach die entsprechenden K8s-Anmeldeinformationen in kubectl auf dem Mac ein.

Weitere Informationen finden Sie unter dem Link:

https://www.zepworks.com/posts/access-minikube-remotely-kvm/ https://www.chevdor.com/post/2021/02/docker_to_k8s/

Antwort2

Schritte zum Herstellen einer Verbindung mit einem Remote-Minikube-Cluster von kubectl aus:

  1. Erstellen Sie einen Minikube-Cluster, der auf einer öffentlichen Schnittstelle lauscht, und fügen Sie einem generierten Zertifikat einen Remote-Hostnamen und/oder IP-Adressen hinzu minikube start --listen-address=0.0.0.0 --apiserver-names=example.com --apiserver-ips=1.2.3.4
  2. verwenden docker ps, um einen öffentlichen Port für den API-Server zu erhalten – er sollte auf einen Port 8443 im Minikube-Container verweisen (es wird so aussehen 0.0.0.0:32774->8443/tcp– der Port ist 32774)
  3. Holen Sie sich die Kube-Konfiguration für Minikube minikube kubectl -- config viewund speichern Sie sie in einer lokalen Datei (zum Beispiel ~/minikube.config).
  4. Bearbeiten Sie clusters[0].cluster.serverdas Feld im ~/minikube.config- stellen Sie es auf den entsprechenden Remote-Host und Port ein, den Sie in Schritt 2 erhalten haben
  5. Erstellen Sie ein lokales Verzeichnis für Zertifikate und einen Schlüssel:mkdir -p ~/.minikube/profiles/minikube
  6. kopieren client.keyund client.crtvom ca.crtMinikube-Host auf einen lokalen Host: scp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/undscp 'example.com:.minikube/ca.crt' ~/.minikube/
  7. Führen Sie es lokal aus, kubectl --kubeconfig ~/minikube.config get pod -Aum zu überprüfen, ob es funktioniert

Antwort3

Sie können socat verwenden, um die Standard-IP und den Standard-Port (192.168.49.2:8443) von Minikube an die Standard-Netzwerkkarten-IP des Systems weiterzuleiten.

socat TCP4-LISTEN:8443,fork TCP4:192.168.49.2:8443

verwandte Informationen