자격증/CKA

[CKA] Udemy 36. Services - NodePort

14ben 2024. 6. 30. 14:29
728x90

Kubernetes Service

  • 애플리케이션의 다양한 구성 요소 간 외부 애플리케이션과의 통신을 가능하게 함.

 

Kubernetes Service의 역할

  • Kubernetes Service는 애플리케이션 간, 그리고 애플리케이션과 사용자 간의 연결을 도와줌.

 

 

  • 예를 들어, 애플리케이션에는
    프론트엔드, 백엔드, 외부 데이터 소스에 연결하는 다양한 섹션의 Pod 그룹이 있음.
  • Service는 이러한 Pod 그룹 간의 연결을 가능하게 함.
  • Service는 프론트엔드 애플리케이션을 최종 사용자에게 제공하고,
  • 백엔드와 프론트엔드 Pod 간의 통신을 도우며, 외부 데이터 소스와의 연결을 설정함.
  • Service는 애플리케이션의 마이크로서비스 간의 느슨한 결합을 가능하게 함.

 

Service의 사용 사례

 

 

1. 외부 통신

  • Pod에 웹 애플리케이션을 배포했을 때, 외부 사용자가 웹 페이지에 접근하는 방법
  • Kubernetes 노드의 IP 주소는 192.168.1.2
  • 내 노트북의 IP 주소는 192.168.1.10
  • 내부 Pod 네트워크는 10.244.0.0 / Pod의 IP는 10.244.0.2
  • 별도의 네트워크에 있어 접근 불가.

2. SSH를 통한 접근

  • Kubernetes 노드에 SSH로 접속해 192.168.1.2의 IP를 사용하여 노드에서 Pod의 웹 페이지에 접근 가능.
  • 그러나 이는 노드 내부에서의 접근으로, 외부 접근 방식이 아님.

3. Service 사용

  • Service는 노드의 포트를 리스닝하고 해당 포트의 요청을 웹 애플리케이션이 실행되는 Pod의 포트로 전달.
  • 이를 NodePort Service라고 하며, 노드의 포트를 리스닝하고 Pod로 요청을 전달하는 방식.

 

Service의 종류

 

  • NodePort: 내부 포트를 노드의 포트로 접근 가능하게 함.
  • ClusterIP: 클러스터 내부에 가상 IP를 생성해 Service 간 통신을 가능하게 함.
  • LoadBalancer: CSP에서 로드 밸런서를 프로비저닝해 애플리케이션의 로드 분산을 가능하게 함.



NodePort Service

 

 

1. 포트 구조

  • 세 가지 포트:
    • targetPort: 웹 서버가 실행되는 Pod의 포트 (예: 80)
    • port: Service 자체의 포트 (예: 80)
    • nodePort: 외부에서 접근 가능한 노드의 포트 (예: 30008)

2. 레이블과 셀렉터 사용

  • Service 정의 파일에서 Pod와 연결하기 위해 레이블과 셀렉터 사용.
  • Pod 정의 파일에서 레이블을 가져와 Service 정의 파일의 셀렉터 섹션에 추가.

 

 

3. Service 생성 및 확인

  • kubectl create 명령어를 사용해 Service 생성.
  • kubectl get services 명령어로 생성된 Service 확인.
  • Service ClusterIP와 매핑된 포트, 타입(NodePort)을 표시함.



다중 Pod와의 Service 연결

 

  • 다중 Pod에 Service 연결 시, Service는 동일한 레이블을 가진 모든 Pod를 엔드포인트로 자동 선택함.
  • Service는 로드 밸런서 역할을 하여 외부 요청을 여러 Pod로 분산함.
  • 로드 밸런싱 알고리즘은 랜덤 방식을 사용함.



여러 노드 간의 Service 확장

  • 여러 노드에 분산된 Pod에 Service 연결 시,
  • Kubernetes는 자동으로 모든 노드에 동일한 NodePort를 설정함.
  • 클러스터의 모든 노드의 IP를 사용해 동일한 포트로 애플리케이션에 접근 가능.

 

 

 

728x90

'자격증 > CKA' 카테고리의 다른 글

[CKA] Udemy 38. Services - Load Balancer  (0) 2024.07.01
[CKA] Udemy 37. Services - Cluster IP  (0) 2024.07.01
[CKA] Udemy 32. Deployments  (0) 2024.06.26
[CKA] Udemy 29. ReplicaSet  (0) 2024.06.24
[CKA] Udemy 22. Pods with YAML  (0) 2024.06.23