EKS 노드 외부 접속(NodePort)

Lungnaha·2022년 4월 12일
1

Docker&k8s

목록 보기
8/9

해당 포스트는 이전에 EKS 노드 그룹 생성과 연결되는 내용입니다. 혹시 포스트를 확인하시다가 모르는 부분이 있으시면 이전 포스트를 읽고 진행해주세요!

💪 들어가며..

오늘은 EKS로 생성한 노드 그룹에 노드 들에 Deployment와 Service를 각 노드에 실행시키고, NodePort를 활용해서 외부에서도 접속하는 과정을 다루어보겠습니다.

🧻 Service & Deployment

먼저 테스트를 위해서 간단한 테스트용 Nginx 이미지를 활용해서 Service와 Deployment를 각 노드에 등록하여주었습니다.

관련 yaml 파일은 아래와 같습니다.

  • helloService.yaml
  • helloDeployment.yaml

여기서 특히 주의해주셔야 할 부분은 Service에 type으로 NodePort를 지정했다는 것입니다.
이렇게 지정해주지 않으면 default 값으로 ClusterIP로 지정되는데, 이를 이용하면 외부에서 노드에 접속할 수 없습니다!!
(저도 해당 부분을 늦게 알아서 삽질을 좀 했습니다;;)
yaml 파일을 모두 작성해주셨다면 아래의 명령어를 사용해줍니다.

kubectl apply -f helloDeployment.yaml
kubectl apply -f helloService.yaml

위의 명령어 입력에 성공하셨다면 아래와 같이 NodePort로 개방되어있는 서비스를 확인하실 수 있습니다.
아래에서는 해당 서비스의 32276 포트를 잘 기억해주세요.
해당 포트 번호를 이용해서 외부에서 해당 서비스에 접속할 수 있는 것입니다.

🚽 외부 접속 테스트

이제 서비스 생성이 완료되었으니 서비스에 접속해보도록 하겠습니다.
먼저 아래의 명령어를 입력해서 접속을 원하는 노드에 정보를 파악해보겠습니다.

kubectl get node -o wide


특히 여기서는 EXTERNAL-IP를 잘 기억해주세요.

이제 접속을 원하는 노드의 ip와 서비스의 Port를 이용해서 특정 노드에 특정 서비스에 접속해보겠습니다.

위의 결과에서 확인할 수 있듯이 두 노드에서 서비스에 잘 접속한 것을 확인할 수 있습니다 :)

참고로, 주의할 점은 EC2 인스턴스에 인바운드 규칙에서 알맞은 포트를 열어주어야 접속이 가능하다는 것입니다.
(저는 처음에 해당 포트를 열어주지 않아서 외부에서 접속이 안되서 3일을 고생한 적도 있습니다.. 역시 기본에 충실하는 것이 가장 중요합니다...)

profile
Long🌈Now😁Happy💖

0개의 댓글