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 ~/.minikube
diretório remoto para o local e alterar algumas configurações. Mas isso parece bastante complicado para algo que uma ferramenta docker-machine
faz 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 docker
driver (esta é a saída completa do comando, apenas uma linha):
$ minikube config view
- driver: docker
E tem vários NodePort
serviç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:
- 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
- use
docker ps
para obter uma porta pública para o servidor API - ele deve fazer proxy para uma porta 8443 dentro do contêiner minikube (será parecido com0.0.0.0:32774->8443/tcp
- a porta é 32774) - obtenha a configuração do kube para o minikube usando
minikube kubectl -- config view
e salve-o em um arquivo local (por exemplo~/minikube.config
) - campo de edição
clusters[0].cluster.server
no~/minikube.config
- configure-o para o host remoto apropriado e a porta obtida na etapa 2 - crie um diretório local para certificados e uma chave:
mkdir -p ~/.minikube/profiles/minikube
- copy
client.key
eclient.crt
doca.crt
host do minikube para um host local:scp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/
escp 'example.com:.minikube/ca.crt' ~/.minikube/
- execute localmente
kubectl --kubeconfig ~/minikube.config get pod -A
para 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