Como exportar portas Kubernetes para host macOS?

Como exportar portas Kubernetes para host macOS?

Quero configurar um cluster Kubernetes local para teste no macOS. Eu selecioneimicrok8sfornecido pela Canonical. O Kubernetes não roda nativamente no macOS, mas usa uma VM Linux fornecida pormultipassagem.

A instalação foi tranquila e a implantação dokubernetes-bootcampparecia ter funcionado. Esta é a saída que obtive até agora:

microk8s kubectl get services

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.152.183.1     <none>        443/TCP          5h9m
kubernetes-bootcamp   NodePort    10.152.183.226   <none>        8080:31004/TCP   4h10m

multipass list

Name                    State             IPv4             Image
microk8s-vm             Running           192.168.64.2     Ubuntu 18.04 LTS

Executar ping na instância ping 192.168.64.2funciona conforme o esperado.

Atualizar: testei ainda mais a conectividade instalando o nginx dentro da VM. O uso curl http://192.168.64.2da página inicial do nginx dentro da VM apareceu no macOS.

Agora, quando eu uso shell na VM multipass exec microk8s-vm -- bash, posso curlacessar meu serviço implantado conforme esperado com ambos:

  • curl http://127.0.0.1:31004
  • curl http://10.152.183.226:8080

Obtendo o resultado esperado de:

Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-57978f5f5d-d977w | v=1

No entanto, estou perdendo a etapa de acessar esses URLs do macOS (curl e navegador). Tentei sem sucesso:

  • curl http://10.152.183.226:8080
  • curl http://10.152.183.226:31004
  • curl http://192.168.64.2:8080
  • curl http://192.168.64.2:31004

Obviamente, estou faltando uma etapa para tornar os serviços em execução acessíveis no host do macOS. O que eu perdi? Ajuda é muito bem vinda!

Responder1

Esse 192.168.64.2 parece uma rede somente host e pode ser uma rede somente host interna. Você pode executar ping em 192.168.64.2 a partir do terminal Mac? o padrão do multipass é NAT para rede e não oferece a opção de alterá-lo para ponte até o multipass 1.6. Que neste momento é apenas fonte. Vejo 1,5 quando digito multipass --version.

Você pode contornar isso de qualquer maneira usando ssh para encaminhar a porta multipass para o host Mac. No shell multipass, também conhecido como multipass shellcujo padrão é primário, execute . Adicione se desejar que o comando ssh port forward seja executado em segundo plano e adicione se desejar permitir conexões de outros hosts na mesma rede do seu Mac. Se o ssh não estiver disponível no seu Mac, habilite o acesso remoto ou apenas logins ssh (servidor ssh) para o seu nome de usuário no painel de controle de compartilhamento nas configurações do seu Mac.ssh -R 8080 -R 31004 [email protected]-f-g

informação relacionada