쿠버네티스 내부에서 사용하는 네트워크가 외부와 격리되어 있기 때문에 쿠버네티스 내부에서 실행한 컨테이너를 외부에서 접근하려면 Service를 사용해야 한다.
즉, Pod를 외부에서 접속할 수 있도록 만드려면 service란 개념에 대해서 알아야 한다.
Service
- 외부에서 쿠버네티스 클러스터에 접속하는 방법을 서비스라고 한다.
- 여러 개의 파드에 고유한 도메인 이름을 부여.
- 여러 개의 파드 접근 시 요청을 로드밸런싱
- 클라우드 플랫폼의 로드 밸런서, 클러스터 노드의 파드등을 통해 파드 외부에 노출
종류
- Cluster Ip: 내부에서만 파드들을 접근할 때 사용.
- NodePort: 파드에 접근할 수 있는 포트를 클러스터의 모든 노드에 동일하게 개방.
- LoadBalancer: aws, gcp와 같은 클라우드 플랫폼 환경에서만 가능.
참고 자료: https://kubernetes.io/ko/docs/tutorials/kubernetes-basics/expose/expose-intro/
외부에서 접속하게 할 것이니 NodePort 방식을 사용할 것이다.
외부에서 Pod 접속하기
클러스터 외부에서 노드의 IP 주소와 서비스의 고정 포트(NodePort)로 요청이 들어오면 서비스의 Port로 포워딩되고, Pod가 위치한 곳으로 간다.
kubectl expose pod [pod 이름] --type=NodePort --port=[포트 번호]
- port에 내부 컨테이너 끼리 통신하기 위한 port를 적어준다.
- test-pod라는 서비스가 생성되었고 port를 보면 80:31976/TCP로 적혀있다.
- 이는 쿠버네티스 내부의 80번 포트가 외부의 31976 포트와 연결되었다는 것을 뜻한다.
kubectl get node -o wide
- 노드 정보를 출력해 IP를 확인해본다.
- 여기서 w-2의 ip를 통해 외부 접속을 시도한다.
- 지정해둔 image인 nginx 웹 페이지를 확인할 수 있다.
728x90
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
[kubernetes] PV, PVC란? (0) | 2024.07.15 |
---|---|
[kubernetes] Node란 (0) | 2024.07.10 |
[kubernetes] Deployment란? (0) | 2024.07.08 |
[kubernetes] ReplicaSet이란? (0) | 2024.07.03 |
[Kubernetes] Pod란? (0) | 2024.07.02 |