Skip to main content Link Menu Expand (external link) Document Search Copy Copied
프로비저닝(Provisioning)

프로비저닝(Provisioning)

사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요할 때 시스템을 사용할 수 있는 상태로 만들어 주는 기술입니다

  • 가상 머신 프로비저닝
    • 가상 머신을 생성하는 기술. ex) AWS 에서 EC2 인스턴스 생성하는 기술, VMWare 에서 VM 생성하는 기술
  • 컨테이너 오케스트레이션 클러스터 프로비저닝
    • Kubernetes, Docker Swarm, 또는 Amazon ECS와 같은 컨테이너 오케스트레이션 플랫폼을 사용하여 클러스터를 프로비저닝하는 기술입니다
  • 네트워크 프로비저닝
    • 가상 네트워크(Virtual Private Cloud 또는 VPC)를 생성하고, 서브넷 및 라우팅 테이블을 설정하는 기술입니다

쿠버네티스는 컨테이너 오케스트레이션 클러스터 프로비저닝이 되겠죠? 쉽게말해서 쿠버네티스는 여러 대의 컴퓨터를 하나의 컴퓨터로 인식하도록 클러스터링해주는 프로비저닝 플랫폼입니다.

CNI(Container Networking Interface)

CNI(Container Networking Interface)

컨테이너 오케스트레이션 시스템(예: Kubernetes, Docker Swarm)과 호스트 시스템의 네트워크 인프라 간의 통합을 담당하는 표준 인터페이스입니다.

  • 컨테이너 네트워크 설정
    • 컨테이너를 시작하거나 연결할 때 컨테이너에 네트워크 인터페이스를 생성하고 설정합니다. 이를 통해 컨테이너가 호스트 및 다른 컨테이너와 통신할 수 있도록 합니다.
  • IP 주소 할당
    • 컨테이너에 IP 주소를 동적으로 할당하거나 정적으로 구성할 수 있습니다. 이를 통해 컨테이너 간 및 외부와의 통신을 지원합니다.
  • 네트워크 정책 및 보안
    • 네트워크 정책을 적용하여 컨테이너 간의 통신을 제어하고 보안을 강화할 수 있습니다. 이를 통해 방화벽 규칙, 액세스 제어 목록(ACL), 가상 네트워크 분리 등을 구현할 수 있습니다.
  • 다양한 네트워크 드라이버 지원
    • 사용자는 자체 네트워크 드라이버를 개발하거나 기존의 CNI 호환 드라이버를 사용할 수 있습니다. 이는 유연성을 제공하며 다양한 네트워크 솔루션을 사용할 수 있도록 합니다.
  • 플러그인 아키텍처
    • 여러 다른 네트워크 솔루션을 쉽게 통합할 수 있습니다. 이는 컨테이너 오케스트레이션 시스템과 호환되도록 표준화된 방식으로 네트워크를 구성할 수 있게 합니다.

쉽게 말해서, CNI를 통해 우리는 클러스터의 네트워크 설정을 간단하게 관리할 수 있어요.

그렇다면 여기서 의문. CNI 와 Kube-proxy 는 무엇이 다를까요?

  • CNI
    • 파드 별 네트워크 할당 및 관리에 집중합니다.
    • 예로 docker compose 에서 자동으로 생성해주는 네트워크를 inspect 하여 봤을 때 컨테이너들이 각기 다른 IP 를 가지고 있잖아요? 이것과 비슷한 역할을 CNI 가 수행합니다.
  • Kube-proxy
    • 서비스 디스커버리와 외부 포트 노출 및 로드 밸런싱을 담당합니다.
    • 예로 Service.yaml 에서 포트 설정과 서비스 이름설정과 같은 부분들이 여기서 실제로 수행됩니다.
쿠버네티스 STATUS

쿠버네티스 STATUS

  • Running
    • 파드가 현재 실행 중이며 정상 상태입니다. 모든 컨테이너가 실행 중이고 문제 없이 동작하고 있음을 나타냅니다.
  • Pending
    • 파드가 생성되었지만 모든 컨테이너가 실행 중이 아니거나 아직 실행 중이 아닙니다. 이 상태는 파드가 실행될 노드를 기다리거나 다른 리소스를 대기 중인 경우 발생할 수 있습니다.
  • ContainerCreating
    • 파드의 컨테이너가 생성 중인 상태입니다. 컨테이너 이미지를 다운로드하고 컨테이너를 시작하고 있는 중입니다.
  • Terminating
    • 파드가 삭제되고 있는 상태입니다. 파드 내의 컨테이너가 종료되고 리소스 정리 작업이 진행 중입니다.
  • Completed
    • 파드 내의 모든 컨테이너가 실행을 완료한 상태입니다. 주로 일회성 작업이나 배치 작업을 수행한 후 종료된 경우에 발생합니다.
  • CrashLoopBackOff
    • 파드 내의 컨테이너가 반복해서 실패하고 있는 상태입니다. 컨테이너가 시작될 때 오류가 발생하거나 빈번하게 다시 시작되고 있음을 나타냅니다.
  • Error
    • 파드 내의 하나 이상의 컨테이너에서 오류가 발생한 상태입니다. 컨테이너에서 문제가 발생하여 실행이 중단되었음을 나타냅니다.
  • ImagePullBackOff
    • 컨테이너 이미지를 가져오지 못해 컨테이너가 시작하지 못하는 상태입니다. 이미지가 존재하지 않거나 가져오는 데 문제가 있는 경우에 발생할 수 있습니다.
  • Init:Error 또는 PodInitializing
    • 파드 내의 Init 컨테이너에서 오류가 발생한 경우, Init:Error 상태가 표시됩니다. 또는 Init 컨테이너가 아직 완료되지 않았을 때 PodInitializing 상태가 표시됩니다.
  • Unknown
    • 파드 상태를 판단할 수 없거나 파드에 대한 정보를 받아오지 못하는 경우 Unknown 상태가 표시됩니다.

상태는 파드와 해당 컨테이너의 실행 상태를 나타내며, 파드 상태 모니터링 및 디버깅에 유용한 정보를 제공합니다. 필요에 따라 이러한 상태를 분석하여 문제를 해결하고 파드를 관리할 수 있습니다.