Conéctese al clúster minikube remoto usando kubectl

Conéctese al clúster minikube remoto usando kubectl

Estoy buscando ver si puedo conectarme a un clúster de minikube remoto (caja de Ubuntu) usando kubectl local (Mac). Actualmente uso Docker y puedo hacerlo muy fácilmente usando docker-machine. Simplemente evalúe el nombre de la máquina y Docker usará la máquina remota.

Me preguntaba si había algo similar para minikube/kubectl. Encontré algunos artículos que mencionan que necesito copiar mi ~/.minikubedirectorio remoto a mi directorio local y cambiar algunas configuraciones. Pero esto parece bastante complicado para algo que una herramienta docker-machinehace a la perfección.

¿Existe una herramienta similar disponible? En caso contrario, ¿alguien podría ayudarme con los pasos necesarios para conectarme a un clúster remoto?

Máquina remota Actualmente uso el dockercontrolador (este es el resultado completo del comando, solo una línea):

$ minikube config view
- driver: docker

Y disponer de una serie de NodePortservicios:

$ 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

Máquina local

$ 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

Respuesta1

No hay ninguna herramienta disponible. La forma de acceder remotamente a minikube es realizar un túnel SSH.

1- Debes poder realizar SSH desde Mac a Ubuntu.

2- Agregue indicadores de reenvío de puerto SSH apropiados. Ejecute el siguiente comando

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

Dónde:

usuario es tu nombre

public_ip es la IP pública de su servidor

minikube_ip es la dirección IP de minikube, puede encontrarla en el servidor usando el comando minikube ip. Probablemente será 192.168.49.2.

3- Luego, simplemente conecte las credenciales K8 apropiadas a kubectl en Mac.

Consulte el enlace para obtener más información:

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

Respuesta2

Pasos para conectarse a un clúster minikube remoto desde kubectl:

  1. crear un clúster minikube escuchando en una interfaz pública, agregar un nombre de host remoto y/o direcciones IP a un certificado generado minikube start --listen-address=0.0.0.0 --apiserver-names=example.com --apiserver-ips=1.2.3.4
  2. utilícelo docker pspara obtener un puerto público para el servidor API; debe conectarse a un puerto 8443 dentro del contenedor minikube (se verá así 0.0.0.0:32774->8443/tcp: el puerto es 32774)
  3. obtenga la configuración de kube para usar minikube minikube kubectl -- config viewy guárdela en un archivo local (por ejemplo ~/minikube.config)
  4. Edite clusters[0].cluster.serverel campo en ~/minikube.config: configúrelo en el host remoto y el puerto apropiados obtenidos en el paso 2.
  5. cree un directorio local para certificados y una clave:mkdir -p ~/.minikube/profiles/minikube
  6. copiar client.key, client.crty ca.crtdesde el host minikube a un host local: scp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/yscp 'example.com:.minikube/ca.crt' ~/.minikube/
  7. ejecutar localmente kubectl --kubeconfig ~/minikube.config get pod -Apara verificar que funciona

Respuesta3

Puede usar socat para reenviar la IP y el puerto predeterminados de minikube (192.168.49.2:8443) a la IP de la tarjeta de red predeterminada del sistema.

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

información relacionada