Services

Watermelon·2026년 1월 5일

CKA 학습 과정

목록 보기
21/35

Services

  • 쿠버네티스 서비스는 애플리케이션 내외부의 다양한 구성 요소 간 통신 지원
  • 포드 그룹 간 연결을 가능하게 하는 서비스
  • 이를 통해 최종 사용자가 애플리케이션 사용할 수 있음

서비스 종류

  1. NodePort: 노드 포트
  • 포트를 통해 내부 파드에 액세스할 수 있도록 함
  1. ClusterIP
  • 클러스터 내부에 가상 IP 생성 -> 프론트 - 백 등 서로 다른 서비스 간 통신 가능
  1. LoadBalacer
  • 지원되는 클라우드 제공업체에서 애플리케이션을 위한 로드 밸런서 프로비저닝

외부 네트워크 통신: 노드 포트 서비스

  • 파드 주소에 직접 접속하지 않고 내부에서 포트를 통해 접속할 수 있도록하는 서비스
  • target port: 실제 실행되는 pod의 포트
apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  type: NodePort
  ports:
  - targetPort: 80 //pod 포트, 입력하지 않을 시 port와 동일한 것으로 간주
    port: 80 //*서비스 포트 필수 입력 란
    nodePort: 30008 //접속 포트 30000-32767 내 설정, 설정하지 않을 시 자동 할당 
  selector:
    app: myapp //연결하고자하는 서비스의 labels 가져옴
    type: front-end
  • 포트는 배열이므로 - 표시 필요
  • 즉 포트는 여러개 가질 수 있음
  • 서비스 연결은 라벨을 통해 서로 연결, 연결하고자하는 label을 가져오자
kubectl create -f test.yml //서비스 실행

kubectl get services //서비스 현 상황 확인

curl http://192.168.1.2:30008 //예시 접속, nodeport로 웹 서비스 접속
  • 한 노드에 pod가 여러개면 어떻게 접속하나요? -> 설정된 label을 통해 접속, 모두 엔드포인트로 선택하여 사용자로부터 오는 외부 요청 전달, 추가 구성은 불필요
  • 부하분산은 무작위 알고리즘 사용
  • 내장된 로드밸런서 역할
  • 여러 노드에 pod가 흩뿌려진 상태면 어떡하나요? -> 자동으로 모든 노드에 걸쳐 서비스 자동 생성 및 포트 매핑됨, 설정한 포트로 접속하면 됨
  • 파드 생성 및 삭제에도 유연하게 적용
profile
많은 경험을 해보고자 하는

0개의 댓글