Certified Kubernetes Administration - 15

2024-06-20

  • Kubernetes
  • Cloud

Kubernetes ClusterIP 서비스

  • 웹 애플리케이션의 구성 요소:

    • 프론트엔드 웹 서버를 호스팅하는 여러 Pod

    • 백엔드 서버를 실행하는 Pod

    • Redis와 같은 키-값 저장소를 실행하는 Pod

    • MySQL과 같은 영구 데이터베이스를 실행하는 Pod

  • 연결의 필요성:

    • 웹 프론트엔드 서버는 백엔드 서버와 통신해야 함

    • 백엔드 서버는 데이터베이스와 Redis 서비스와 통신해야 함

  • Pod의 IP 주소:

    • Pod는 IP 주소를 가지지만, 이 IP 주소는 고정되지 않음

    • Pod가 언제든지 종료되고 새로운 Pod가 생성될 수 있기 때문에 내부 통신에 이 IP 주소를 신뢰할 수 없음

  • 서비스의 역할:

    • 서비스는 Pod를 그룹화하고 단일 인터페이스를 제공하여 그룹 내의 Pod에 접근할 수 있게 함

    • 예를 들어, 백엔드 Pod를 위한 서비스를 생성하면, 모든 백엔드 Pod를 그룹화하고 다른 Pod가 이 서비스에 접근할 수 있는 단일 인터페이스를 제공함

    • 요청은 서비스 하위의 Pod 중 하나에 무작위로 전달됨

  • Microservices 배포:

    • 각 계층은 필요한 대로 확장하거나 이동할 수 있으며, 서비스 간의 통신에 영향을 주지 않음

    • 각 서비스는 클러스터 내에서 IP와 이름을 할당받으며, 다른 Pod는 이 이름을 사용하여 서비스에 접근함

    • 이 유형의 서비스를 ClusterIP 서비스라고 함

ClusterIP 서비스 정의 파일 작성

  • 기본 템플릿:

    • API 버전, 종류, 메타데이터, 사양

    • API 버전은 V1, 종류는 서비스, 서비스 이름은 backend

  • 사양 섹션:

    • 타입은 ClusterIP (기본값이므로 생략 가능)

    • 포트 섹션:

      • targetPort: 백엔드가 노출되는 포트 (80)

      • port: 서비스가 노출되는 포트 (80)

  • Pod 연결:

    • Pod 정의 파일에서 레이블을 가져와서 선택기(selector)에 추가

    • Cube Control Create 명령어를 사용하여 서비스를 생성하고, Cube Control Get Services 명령어로 상태 확인

    • 다른 Pod는 클러스터 IP나 서비스 이름을 사용하여 서비스에 접근할 수 있음

요약

  • ClusterIP 서비스를 사용하면 각 계층이 필요에 따라 확장하거나 이동할 수 있으며, 서비스 간의 통신에 영향을 주지 않음

  • 서비스는 Pod를 그룹화하고 단일 인터페이스를 제공하여 그룹 내의 Pod에 접근할 수 있게 함

  • Cube Control Create 명령어를 사용하여 서비스를 생성하고, Cube Control Get Services 명령어로 상태를 확인할 수 있음

이 강의는 여기까지입니다. 다음 강의에서 뵙겠습니다.

Certified ...

Certified ...