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 ~/.minikube
directorio remoto a mi directorio local y cambiar algunas configuraciones. Pero esto parece bastante complicado para algo que una herramienta docker-machine
hace 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 docker
controlador (este es el resultado completo del comando, solo una línea):
$ minikube config view
- driver: docker
Y disponer de una serie de NodePort
servicios:
$ 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:
- 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
- utilícelo
docker ps
para 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) - obtenga la configuración de kube para usar minikube
minikube kubectl -- config view
y guárdela en un archivo local (por ejemplo~/minikube.config
) - Edite
clusters[0].cluster.server
el campo en~/minikube.config
: configúrelo en el host remoto y el puerto apropiados obtenidos en el paso 2. - cree un directorio local para certificados y una clave:
mkdir -p ~/.minikube/profiles/minikube
- copiar
client.key
,client.crt
yca.crt
desde el host minikube a un host local:scp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/
yscp 'example.com:.minikube/ca.crt' ~/.minikube/
- ejecutar localmente
kubectl --kubeconfig ~/minikube.config get pod -A
para 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