⚠️ NKS(Naver Kubernetes Service) 환경에서 진행하였습니다. ⚠️
▪︎ NodePort 타입으로 서비스 생성 및 접속
- NodePort 타입으로 서비스를 생성해보자 !
apiVersion: v1
kind: Service
metadata:
name: cn-app-svc-n
spec:
selector:
app: cn-app
ports:
- port: 8080
targetPort: 8080
type: NodePort
- 서비스 생성 확인 후 할당된 NodePort(31374) 확인 !
- 노드의 IP 확인
- 음.. Node IP + NodePort로 접속을 시도했는데.. 과묵하구먼..
🚨 트러블 슈팅
1. 포트 지정 문제 ?
- 처음에는 ‘파드에 포트를 잘못 지정해주고 타겟 포트랑 일치가 안돼서 그런가..’ 라는 의문점으로 시작하게 되었다.
- 하지만 파드 매니페스트 작성 시 포트와 타겟 포트를 동일하게 지정해도 똑같이 NodePort 서비스에 접속이 되지 않았다.
- 트래픽 → 노드 포트 → 파드 포트 → 타겟 포트 → 컨테이너
- 여기서 포트 지정과는 현재 이슈와 아무런 관계가 없다고 판단하였다.
2. Private Cluster or Public Cluster 문제 ?
- 많이 헤매고 여러 레퍼런스를 찾던 도중에 관련 문서에서 힌트를 찾을 수 있게 되었다 !
‘노드가 프라이빗 서브넷에 있고 VPC 내부 또는 VPC를 통해서만 연결할 수 있는 경우 노드의 프라이빗 IP 주소를 확인합니다.’
- 현재 사용하고 있는 클러스터는 Private Subnet에서 생성한 Private Cluster이다.
- 여기서 반짝✨ 빛이 났다.
- 외부에서 Node IP:NodePort로 접속 시도
- 현재 Private Subnet에 있는 노드에 외부에서 Inbound로 들어갈 수 있는 문이 없음
- 들어갈 수도 없고 알 수 없는 목적지를 향한 트래픽은 헤매다가 Time Out..!
- 그럼 여기서 두 가지 방법을 생각하였다.
- Public Subnet에 Public Type으로 Kubernetes Cluster 새로 생성하기
- 같은 VPC 내 Public Subnet에 Bastion Host Server를 생성하고 Private Type 클러스터에 생성된 NodePort 서비스 접속하기
3. 보안 그룹 문제 ?
- 외부 트래픽을 수신할 수 있도록 워커 노드의 보안 그룹(ACG : Access control Group)을 설정해보고 서비스에 접속해보기
2-1. Public Subnet에 Public Type Kubernetes Cluster 새로 생성 후 서비스 접속
- public 타입으로 cluster를 구축해 보았다.
- 생성 완료 !
- 여기서 워커 노드들에 public IP가 할당되어 있는 모습을 볼 수 있다.
- NodePort Type 서비스를 생성해보고 서비스에 접속을 시도해 보았다.
- 또 과묵하구먼..
- 실패..
- 였지만.. 원인 분석 후 3번에서 해결 !
2-2. Bastion Host Server 생성하고 Private Type 클러스터 서비스 접속하기
- Node 풀이 속해있는 VPC내의 Public Subnet에 Bastion Server를 생성
- 접속 !
- NodePort Service에 접속 성공 !
3. 특정 NodePort에 관한 보안 그룹(ACG : Access control Group) 설정
- 2-1의 실패 원인을 분석해 보았다.
- NodePort는 해당 서비스를 외부에 워커 노드에 대한 특정 포트를 공개하는 것이다.
- 그렇다면 외부에서 특정 포트를 통해 노드에 접근하기 위해서는 외부 트래픽을 수신할 수 있도록 워커 노드의 보안 그룹(ACG : Access Controll Group)을 설정해줘야 하지 않을까 ?
- 해당 특정 NodePort에 대한 Inbound 규칙 추가 및 노드에 적용
- 서비스에 접속 !
- 성공 ㅎㅎㅎㅎ
▪︎ LoadBalancer 타입으로 서비스 생성 및 접속
- LoadBalancer 타입으로 서비스를 생성 !
apiVersion: v1
kind: Service
metadata:
name: cn-app-svc-l
spec:
selector:
app: cn-app
ports:
- port: 8080
targetPort: 8080
type: LoadBalancer
- 서비스 생성
- and pending…
- loadbalancer 주소 할당 !
- 위 주소로 서비스에 접근 !
- 성공❗️❗️
'Kubernetes' 카테고리의 다른 글
DB Pod 생성하기 (0) | 2022.12.15 |
---|---|
[NKS] Ingress 생성 (0) | 2022.11.13 |
[NKS] Deployment 생성 (0) | 2022.11.13 |
[Minikube] LoadBalancer Type 서비스 생성 (0) | 2022.11.12 |
[Minikube] NodePort Type 서비스 생성 (0) | 2022.11.12 |