초보를 위한 쿠버네티스 안내서 - 쿠버네티스 아키텍처2 (오브젝트)

yshjft·2023년 1월 6일
0

pod

  • 가장 작은 배포 단위
  • pod마다 고유한 IP를 할당
  • pod은 여러개의 컨테이너 또는 단일 컨테이너로 이루어질 수 있다.
    • host 폴더 공유
    • localhost 네트워크 공유

ReplicaSet

  • 여러개의 pod을 관리
    • replicas : 관리할 pod의 개수를 결정
  • 새로운 pod은 pod template을 참고하여 생성
  • 새로운 pod을 추가하거나 기존 pod을 제거하여 원하는 수를 유지

Deployment

  • 배포 버전을 관리
    • ReplicaSet을 이용하여 버전을 관리한다.(ex. 무중단 배포)

다양한 Workload

  • Workload란?
    쿠버네티스 상에서 작동되는 애플리케이션
  • DAEMON SET
    모든 노드에 꼭 하나씩만 있기를 바라는 pod을 만들고 싶을 때 사용 (ex. 로그 수집기, 모니터링)
  • STATEFUL SETS
    순서대로 pod을 실행하고 싶거나 같은 볼륨을 재활용 하고 싶은 경우 사용
  • JOB
    한번 실행하고 죽는 pod

Service

ClusterIP

  • 클러스터 내부에서 사용하는 프록시(로드밸런서)
  • pod 업데이트 시 pod이 죽고 새로 뜨게된다. 이 때 pod의 IP는 언제든지 바뀌게 된다. 이러한 이유 때문에 ClusterIP를 사용한다.
  • Cluster 내부에서 서비스 연결은 DNS를 이용

NodePort

  • ClusterIP는 클러스터 내부에서만 사용할 수 있다. 즉 ClusterIP를 이용하여 외부(브라우저)에서 직접 접근할 수 없다.
  • 노드에서 노출되어 외부에서 접근 가능한 서비스
  • 모든 노드에 동일한 포트로 생성
    • 어느 노드로 이동한던 간에 동일한 클러스터 IP를 찾아가게 된다.

LoadBalancer

  • 노드가 여러개 있다고 가정하고 만약 도메인이 하나의 노드에만 연결되어 있는 상태에서 그 하나의 노드가 죽는다면 접속이 불가능해지게 된다.
  • 하나의 IP 주소를 외부에 노출
  • ex) 만약 연결되 있던 노드가 죽으면 → 연결이 안된다. LoadBalancer를 이용하여 이를 해결하자.

흐름

web browser → LoadBalancer → NodePort → ClusterIP → pod

Ingress

  • 도메인 또는 경로별로 라우팅을 해준다.
  • 모든 요청에 대하여(??) 전부 NodePort 또는 전부 LoadBalancer로 만들면 자원이 낭비가 된다.
  • Nginx와 같은 기존 기술들을 k8s에 맞게 포장하여 사용됨
  • Ingress를 사용하게 되는 경우 NodePort와 LoadBalancer가 자동을 따라온다.
profile
꾸준히 나아가자 🐢

0개의 댓글