Conecte-se ao cluster remoto do minikube usando kubectl

Conecte-se ao cluster remoto do minikube usando kubectl

Estou procurando ver se consigo me conectar a um cluster minikube remoto (caixa Ubuntu) usando kubectl local (Mac). Atualmente uso Docker e posso fazer isso facilmente usando docker-machine. Basta avaliar o nome da máquina e o docker usará a máquina remota.

Eu queria saber se havia algo semelhante para minikube/kubectl? Encontrei alguns artigos que mencionam que preciso copiar meu ~/.minikubediretório remoto para o local e alterar algumas configurações. Mas isso parece bastante complicado para algo que uma ferramenta docker-machinefaz perfeitamente.

Existe uma ferramenta semelhante disponível ou, se não, alguém poderia me ajudar com as etapas necessárias para conectar-se a um cluster remoto?

Máquina Remota Atualmente eu uso o dockerdriver (esta é a saída completa do comando, apenas uma linha):

$ minikube config view
- driver: docker

E tem vários NodePortserviços:

$ 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

Responder1

Não há nenhuma ferramenta disponível. A maneira de acessar remotamente o minikube é fazer o tunelamento SSH.

1- Você precisa ser capaz de fazer SSH do Mac para a caixa do Ubuntu.

2- Adicione sinalizadores de encaminhamento de porta SSH apropriados. Execute o seguinte comando

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

Onde:

usuário é seu nome

public_ip é o IP público do seu servidor

minikube_ip é o endereço IP do minikube, você pode encontrá-lo no servidor usando o comando minikube ip. Provavelmente será 192.168.49.2.

3- Em seguida, basta conectar as credenciais K8s apropriadas ao kubectl no Mac.

Consulte o link para obter mais informações:

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

Responder2

Etapas para conectar-se a um cluster minikube remoto do kubectl:

  1. criar um cluster minikube ouvindo em uma interface pública, adicionar um nome de host remoto e/ou endereços IP a um certificado gerado minikube start --listen-address=0.0.0.0 --apiserver-names=example.com --apiserver-ips=1.2.3.4
  2. use docker pspara obter uma porta pública para o servidor API - ele deve fazer proxy para uma porta 8443 dentro do contêiner minikube (será parecido com 0.0.0.0:32774->8443/tcp- a porta é 32774)
  3. obtenha a configuração do kube para o minikube usando minikube kubectl -- config viewe salve-o em um arquivo local (por exemplo ~/minikube.config)
  4. campo de edição clusters[0].cluster.serverno ~/minikube.config- configure-o para o host remoto apropriado e a porta obtida na etapa 2
  5. crie um diretório local para certificados e uma chave:mkdir -p ~/.minikube/profiles/minikube
  6. copy client.keye client.crtdo ca.crthost do minikube para um host local: scp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/escp 'example.com:.minikube/ca.crt' ~/.minikube/
  7. execute localmente kubectl --kubeconfig ~/minikube.config get pod -Apara verificar se funciona

Responder3

Você pode usar socat para encaminhar o IP e a porta padrão do minikube (192.168.49.2:8443) para o IP da placa de rede padrão do sistema.

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

informação relacionada