K8S 클러스터(노드 2개와 마스터 노드 1개)를 생성했는데 클러스터는 인터넷에 액세스할 수 없고 테스트 머신만 인터넷에 액세스할 수 있습니다.
클러스터 외부에서 Ubuntu-OpenSSH 포드에 SSH로 연결하고 포트 전달을 수행하고 싶습니다.
kubectl port-forward pod/ubuntu-ssh 30180:22
openssh-server가 Pod에서 수신 대기하는 30180
컨테이너 포트는 어디에 있습니까 ?22
하지만 클러스터 IP에 연결하려고 하면 오류가 발생합니다.
$ ssh [email protected] -p 30180
ssh: connect to host 192.X.X.X port 30180: Connection refused
하지만 localhost를 사용하여 이 작업을 수행하면 제대로 작동합니다.
$ ssh root@localhost -p 30180
root@localhost's password:
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.15.0-25-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: Fri Jul 1 12:39:19 2022 from 127.0.0.1
root@ubuntu-ssh:~#
localhost 대신 IP 주소를 사용하여 Pod에 연결하도록 도와줄 수 있는 사람이 있습니까? 미리 감사드립니다!
더 많은 배경 정보를 보려면 다음 튜토리얼을 따르세요. https://sanda-dev.medium.com/ssh-into-kubernetes-pod-without-public-ip-access-fbb9da7f7b26
답변1
출력을 살펴보면 다음 kubectl port-forward --help
과 같은 내용이 표시됩니다.
Options:
--address=[localhost]: Addresses to listen on (comma separated). Only accepts IP addresses or
localhost as a value. When localhost is supplied, kubectl will try to bind on both 127.0.0.1 and ::1
and will fail if neither of these addresses are available to bind.
기본적으로 열린 포트는 kubectl port-forward
에만 바인딩되므로 localhost
로컬 시스템에서 시작되는 연결에만 작동합니다. 명령을 실행하는 컴퓨터 외부에 노출하려면 port-forward
다음을 추가하십시오.
kubectl port-forward --address=0.0.0.0 ...
이는 0.0.0.0
"모든 주소"를 의미하므로 사용 가능한 모든 인터페이스에서 연결에 사용할 수 있습니다.