Kubernetes 클러스터에서 서버 측 서비스 발견 및 로드 밸런싱 설정

날아올라돼지야·2024년 9월 1일
0

이번 강의에서는 Kubernetes 클러스터 내에서 서버 측 서비스 발견과 로드 밸런싱을 설정하는 방법을 다룹니다. 이를 위해 Spring Cloud Kubernetes 프로젝트를 활용하며, Discovery Server를 설정하는 과정에 대해 설명합니다.

1. Spring Cloud Kubernetes 프로젝트 소개

  • Spring Cloud Kubernetes는 Kubernetes 클러스터 내에서 서비스 발견 및 로드 밸런싱을 설정할 수 있도록 도와주는 Spring 프로젝트입니다.
  • 기본적으로 Kubernetes 클러스터에는 별도의 서비스 발견 및 등록 서버가 포함되어 있지 않으므로, 이를 직접 설정해야 합니다.

2. Kubernetes Manifest 파일 설정

  • Kubernetes Manifest 파일 작성: Spring Cloud Kubernetes 팀이 제공하는 예제를 바탕으로, Discovery Server를 설정하기 위한 Kubernetes Manifest 파일을 작성합니다.
  • 필수 설정:
    1. Service 객체: 클러스터 내에서 Discovery Server가 다른 마이크로서비스에 노출될 수 있도록 설정합니다. 서비스 유형은 ClusterIP로 설정합니다.
    2. Service Account 및 Role Binding: Discovery Server가 클러스터 내에서 필요한 권한을 가지도록 Service Account를 생성하고, 이를 특정 역할(Role)에 바인딩합니다.
    3. Deployment 객체: 실제 Discovery Server를 배포하기 위한 설정입니다. 여기에는 컨테이너 이미지, 준비 상태(Ready) 및 생존 상태(Liveness) 체크 설정 등이 포함됩니다.

3. 주요 설정 설명

  • Service 객체:

    • 포트 설정: 외부 노출 포트는 80, 내부 서비스 포트는 8761로 설정합니다.
    • 서비스 유형: ClusterIP로 설정하여, 내부 클러스터에서만 접근 가능하도록 합니다.
  • Service Account 및 Role Binding:

    • Service Account: spring-cloud-kubernetes-discoveryserver라는 이름으로 생성합니다.
    • Role Binding: namespace-reader 역할을 해당 서비스 계정에 바인딩하여, 클러스터 내의 서비스와 엔드포인트 정보를 읽을 수 있도록 합니다.
    • 추가 권한 설정: 서비스와 엔드포인트 외에도, pods 리소스에 대한 읽기 권한을 부여해야 최신 Kubernetes에서 제대로 작동합니다.
  • Deployment 객체:

    • 컨테이너 이미지: Spring Cloud Kubernetes 팀이 제공하는 Discovery Server 이미지를 사용합니다. 예를 들어, 3.0.4 버전을 사용할 수 있습니다.
    • Readiness 및 Liveness Probe 설정:
      • 초기 대기 시간(initialDelaySeconds): 100초로 설정하여, Discovery Server가 시작될 충분한 시간을 확보합니다.
      • 프로브 주기(periodSeconds): 30초로 설정하여, 일정한 주기로 상태를 점검합니다.

4. 설정 파일 작성 및 설치 준비

  • 설정 파일 작성: 작성한 설정 파일을 kubernetes-discoveryserver.yaml이라는 이름으로 저장합니다.
  • 구성 변경: 초기 프로브 지연 시간을 늘려 Kubernetes가 Discovery Server를 반복적으로 재시작하는 문제를 방지합니다.

결론

이번 강의에서는 Kubernetes 클러스터에서 서버 측 서비스 발견과 로드 밸런싱을 설정하는 과정을 다루었으며, Spring Cloud Kubernetes 프로젝트를 사용하여 Discovery Server를 구성하는 방법을 설명했습니다. 다음 강의에서는 이 설정을 실제로 적용하고 테스트하는 방법을 살펴봅니다.

감사합니다.

profile
무슨 생각하며 사니

0개의 댓글