Certified Kubernetes Administration - 14

2024-06-20

  • Kubernetes
  • Cloud

Kubernetes Services

  • Kubernetes Services는 애플리케이션 내외부의 다양한 구성 요소 간의 통신을 가능하게 합니다.

  • 서비스는 애플리케이션과 다른 애플리케이션 또는 사용자 간의 연결을 도와줍니다.

예시

  • 애플리케이션에는 프론트엔드 로드를 사용자에게 제공하는 그룹, 백엔드 프로세스를 실행하는 그룹, 외부 데이터 소스에 연결하는 그룹이 있습니다.

  • 서비스는 이러한 Pod 그룹 간의 연결을 가능하게 합니다.

  • 프론트엔드 애플리케이션을 사용자가 사용할 수 있도록 하며, 백엔드와 프론트엔드 Pod 간의 통신을 도와줍니다.

  • 외부 데이터 소스에 대한 연결을 설정하는 데에도 도움이 됩니다.

  • 서비스는 애플리케이션의 마이크로서비스 간의 느슨한 결합을 가능하게 합니다.

외부 통신

  • Kubernetes 노드의 IP 주소는 192.168.1.2이며, 사용자의 랩탑은 192.168.1.10입니다.

  • 내부 Pod 네트워크는 10.244.0.0 범위에 있으며, Pod의 IP는 10.244.0.2입니다.

  • 사용자는 10.244.0.2 주소의 Pod에 접근할 수 없습니다.

NodePort 서비스

  • NodePort 서비스는 노드의 포트를 통해 요청을 수신하고 Pod의 포트로 전달합니다.

  • NodePort 서비스는 노드 포트를 사용하여 외부 사용자가 Kubernetes 클러스터 내부의 Pod에 접근할 수 있도록 합니다.

  • 예를 들어, 노드의 IP 주소 192.168.1.2와 포트 30008을 사용하여 웹 서버에 접근할 수 있습니다.

서비스 종류

  1. NodePort: 내부 포트를 노드의 포트에 매핑하여 외부 접근을 가능하게 합니다.

  2. ClusterIP: 클러스터 내부에서 서비스 간의 통신을 위한 가상 IP를 생성합니다.

  3. LoadBalancer: 클라우드 제공자에서 애플리케이션을 위한 로드 밸런서를 프로비저닝합니다.

서비스 정의 파일

  • 서비스 정의 파일은 API 버전, 종류, 메타데이터, 사양 섹션으로 구성됩니다.

  • 사양 섹션에서는 서비스 유형(NodePort, ClusterIP, LoadBalancer)과 포트 정보를 정의합니다.

  • 포트 정보에는 targetPort(실제 웹 서버 포트), port(서비스 포트), nodePort(노드 포트)가 포함됩니다.

  • 선택기(selector)를 사용하여 서비스와 Pod를 연결합니다.

다중 Pod 처리

  • 프로덕션 환경에서는 여러 개의 웹 애플리케이션 인스턴스를 실행하여 고가용성과 로드 밸런싱을 보장합니다.

  • 동일한 라벨을 가진 여러 Pod가 있을 때, 서비스는 이러한 Pod들을 엔드포인트로 자동 선택합니다.

  • 서비스는 요청을 무작위 알고리즘을 사용하여 여러 Pod에 분산합니다.

다중 노드 처리

  • 여러 노드에 걸쳐 분산된 Pod가 있을 때, 서비스는 클러스터의 모든 노드에 걸쳐 포트를 매핑하여 외부 접근을 가능하게 합니다.

  • 모든 노드의 동일한 포트를 사용하여 애플리케이션에 접근할 수 있습니다.

요약

  • 단일 노드의 단일 Pod, 단일 노드의 다중 Pod, 다중 노드의 다중 Pod 경우 모두 동일한 방식으로 서비스가 생성됩니다.

  • Pod가 추가되거나 제거될 때 서비스가 자동으로 업데이트되어 높은 유연성과 적응성을 제공합니다.

  • 한 번 서비스가 생성되면 추가적인 구성 변경이 필요하지 않습니다.

Certified ...

Certified ...