Cloud-뜬구름잡기

Kubernetes(k8s)에서 kubectl 사용하여 mysql port-forward 하기

무한열정 2022. 8. 19. 10:43

구성은 Vagrant Box 3개로 Kubernetes 3Node로 구성되어 있다.

현재 Vagrant를 사용하고 있어 다음 설정을 추가한다.

VM을 사용하지 않는경우 필요하지 않을수 있다.

config.vm.network "forwarded_port", guest: 3306, host: 13306, protocol: "tcp"

 

Kubernetes 환경에서 다음 명령으로 서비스를 조회한다.

kubectl get svc

이경우 mysql 서비스가 10.233.56.66:3306을 사용하는것을 알수 있다.

Kubernetes Node로 접속한다.

vagrant ssh control-plane1

kubectl port-forward 명령으로 포트포워딩을 실행한다.

kubectl port-forward --address=0.0.0.0 service/mysql 3306:3306

대기 모드 상태로 되어 포트포워딩이 실행된다.

이 기능은 mysql 서비스가 제대로 구성되었는지 테스트시에 사용해야 한다.

 

여기서 주의할 사항은 --address=0.0.0.0를 반드시 추가해야 한다.

생략시 127.0.0.1로부터 포워딩 되는 것으로 설정되므로 서비스가 불가능 하다.

kubectl port-forward service/mysql 3306:3306

 

필요시 다음 포트 사용여부를 확인 할수도 있다.

netstat -tnlp

 

* 참고 자료

포트 포워딩을 사용해서 클러스터 내 애플리케이션에 접근하기

https://kubernetes.io/ko/docs/tasks/access-application-cluster/port-forward-access-application-cluster/

 

127.0.0.1 vs 0.0.0.0 차이

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=aou12&logNo=221371564012 

 

127.0.0.1 vs 0.0.0.0 차이

* 127.0.0.1 127.0.0.1은 로컬 호스트 즉 자기 스스로를 가리키는 IP - 동일한 기계에서만 액세스할 수 ...

blog.naver.com

현재 DBeaver를 사용하고 있으며

DB Client Tool에서 정상적으로 접속이 확인된다.

* 그외에 다른 시도

SSH Tunneling으로 시도 하였다.

ssh -L 3306:10.233.56.66:3306 vagrant@192.168.56.21

이것도 가능할것 같았으나 실제로는 테스트 결과는 동작 하지 않았다.

 

* SSH Tunneling 관련 참고자료

https://blog.naver.com/PostView.naver?blogId=alice_k106&logNo=221364560794 

 

150. [SSH, Network] SSH 포트 포워딩(SSH 터널링)의 개념 및 사용 방법

이번 포스트에서는 'SSH 포트 포워딩' 또는 'SSH 터널링' 이라고 불리는 것에 대해서 설명한다. 1. ...

blog.naver.com