Kubernetes 포트를 macOS 호스트로 내보내는 방법은 무엇입니까?

Kubernetes 포트를 macOS 호스트로 내보내는 방법은 무엇입니까?

macOS에서 테스트하기 위해 로컬 Kubernetes 클러스터를 설정하고 싶습니다. 내가 선택한microk8s캐노니컬 제공. Kubernetes는 macOS에서 기본적으로 실행되지 않지만 다음에서 제공하는 Linux VM을 사용합니다.멀티패스.

설치가 원활하게 진행되었으며 배포가 완료되었습니다.쿠버네티스 부트캠프효과가 있었던 것 같았습니다. 이것은 지금까지 얻은 결과입니다.

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

인스턴스를 핑하면 ping 192.168.64.2예상대로 작동합니다.

업데이트: VM 내부에 nginx를 설치하여 연결성을 추가로 테스트했습니다. curl http://192.168.64.2VM 내부에서 nginx 시작 페이지를 사용하면 macOS에 표시됩니다.

이제 를 사용하여 VM에 쉘을 설치하면 다음 두 가지를 모두 사용하여 예상대로 배포된 서비스에 들어갈 multipass exec microk8s-vm -- bash수 있습니다 .curl

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

예상되는 결과 얻기:

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

그러나 macOS(컬 및 브라우저 모두)에서 이러한 URL에 액세스하는 단계가 누락되었습니다. 시도했지만 실패했습니다.

  • 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

macOS 호스트에서 실행 중인 서비스에 액세스할 수 있도록 하는 단계가 분명히 누락되었습니다. 내가 놓친 게 무엇입니까? 도움을 주시면 대단히 감사하겠습니다!

답변1

192.168.64.2는 호스트 전용 네트워크처럼 보이며 내부 호스트 전용 네트워크일 수도 있습니다. Mac 터미널에서 192.168.64.2를 ping할 수 있습니까? 멀티패스는 기본적으로 네트워크의 NAT로 설정되어 있으며 멀티패스 1.6까지는 이를 브리지로 변경할 수 있는 옵션을 제공하지 않습니다. 현재로서는 소스일 뿐입니다. 를 입력하면 1.5가 표시됩니다 multipass --version.

어쨌든 ssh를 사용하여 멀티패스 포트를 Mac 호스트로 전달하면 이 문제를 해결할 수 있습니다. multipass shell기본이 기본인 멀티패스 셸 AKA에서 . ssh 포트 전달 명령을 백그라운드에서 실행하려면 추가 하고, Mac과 동일한 네트워크에 있는 다른 호스트의 연결을 허용하려면 추가하세요. Mac에서 SSH를 사용할 수 없는 경우 Mac 설정의 공유 제어판에서 사용자 이름에 대해 원격 액세스를 활성화하거나 SSH 로그인(Ssh 서버)만 활성화하세요.ssh -R 8080 -R 31004 [email protected]-f-g

관련 정보