심심한 개발자의 취미생활

쿠버네티스 오브젝트

pod

  • 쿠버네티스에서 생성하고 관리할 수 있는 가장 작은 배포 단위
  • 파드는 하나 이상의 컨테이너 그룹을 의미한다.
  • 보통은 하나의 파드에 하나의 컨테이너를 넣지만, 아주 긴밀하게 협력해야 하는 보조 컨테이너(로그 수집)를 함께 넣기도 한다.
  • 파드안의 컨테이너들은 네트워크와 스토리지를 공유하기에 같은 IP주소와 포트 공간을 굥유하므로 localhost를 통해 서로 통신할 수 있다.
  • 파드는 언제든지 죽고 새로 생성될 수 있는 존재이며, IP 주소도 고정되지 않는다.

deployment

  • 파드와 레클리카셋을 관리하는 상위 컨트롤러
  • 상태관리, 배포 및 업데이트
    • 새로운 버전의 애플리케이션을 배포할 때, 중단 없이 순차적으로 구버전 파드를 새버전 파드로 교체하는 롤링 업데이트 기능을 제공한다. 문제가 생기면 손쉽게 이전 버전으로 되돌리는 롤백도 가능하다.

service

  • 여러 파드에 쉽게 접근할 수 있도록 고유한 주소 (IP 주소, DNS 이름)를 부여하고, 요청을 해당 파드들에게 분산하는(로드 밸런싱) 역할
  • 파드는 수시로 생셩되고 삭제되므로 IP 주소가 계속 바뀐다. 외부에서 또는 클러스터 내부의 다른 애플리케이션이 이 파드에 안정적으로 접근할 방법이 필요한다.
  • 서비스는 레이블을 사용하여 자신이 어떤 파드들에게 요청을 전달해야 하는지 식별한다.
  • 클러스터 내부용(ClusterIP), 외부 노출용(NodePort, LoadBalancer) 등 다양한 타입을 가진다.

namespace

  • 하나의 물리적인 쿠버네티스 클러스터를 여러개의 논리적인 가상 클러스터로 나누어 사용하는 방법
  • 리소스 격리
    • 여러 팀이나 프로젝트가 하나의 클러스터를 공유할 때, 서로의 리소스(파드, 서비스 등)가 겹치지 않도록 격리된 공간을 제공
  • 접근 제어 및 자원 할당
    • 네임스페이스별로 사용자 권한을 다르게 설정하거나, 사용할 수 있는 CPU나 메모리 양을 제한할 수 있다.
  • default, kube-system 등 기본적으로 생성되는 네임스페이스들이 있으며, 사용자가 필요에 따라 자유롭게 생성할 수 있다.