인터넷 액세스 없이 클러스터 외부에서 포드에 SSH를 통해 연결하려면 어떻게 해야 합니까? (K8S)

인터넷 액세스 없이 클러스터 외부에서 포드에 SSH를 통해 연결하려면 어떻게 해야 합니까? (K8S)

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"모든 주소"를 의미하므로 사용 가능한 모든 인터페이스에서 연결에 사용할 수 있습니다.

관련 정보