Kubernetes란?

2023. 9. 16. 16:01·Data Engineer
728x90

Kubernetes란?

Kubernetes는 Google의 Go언어로 작성된 컨테이너 오케스트레이터입니다.

이전에는 Microsoft Hyper-V 또는 VMware 제품과  같은 머신을 생성하고 배포하기 위한 솔루션이 있었습니다.

 

컨테이너에는 동일한 Docker가 있었습니다. 이를 통해 여러 컨테이너를 동시에 관리할 수 있었습니다.

하지만 아키텍처에서 컨테이너를 사용하는 서비스 및 애플리케이션을 위한 대규모 다중 구성요소 제품을 

배포하는 데는 이 기술을 사용할 수 없었습니다.

 

그래서 등장한 것이 Kubernetes입니다.

Kubernetes를 사용하면 컨테이너를 사용하여 전체 클러스터 배포를 자동화하고, 다양한 정책과 설정을 유연하게 설정하고, 코드형 인프라 접근 방식을 사용할 수 있습니다.

 

동시에 Kubernetes를 사용하면 컨테이너의 가벼움으로 인해 서비 리소스를 보다 효율적으로 배포할 수 있습니다.

각각 별도의 운영 체제 복사본을 실행하는 가상 머신은 매우 느리고 많은 리소스를 소비합니다.

Kubernetes는 각 서버에 대해 별도의 OS를 요구하지 않고도 하나의 서버에서 컨테이너를 실행할 수 있습니다.

 

Kubernetes는 간단히 말해서 서버에 호스팅된 애플리케이션을 효과적으로 관리하고 장비의 리소스 활용도를 최적화할 수 있는 시스템입니다.

 

Kubernetes의 역할

  • 가상 머신에 비해 애플리케이션을 쉽고 효율적으로 구축하고 배포할 수 있다.
  • 지속적인 개발, 구현 및 배포 이 모든 것은 컨테이너 이미지가 빠르고 쉬운 롤백을 통해 안정적으로 구축 및 배포되도록 보장한다.
  • 애플리케이션 및 기타 시스템의 성능에 대한 정보를 얻는다.
  • 개발, 테스트, 출시 과정에서 동일한 환경을 사용하면 클라우드에서와 동일한 방식으로 노트북에서 작업할 수 있다.
  • 클라우드 및 다른 운영체제와의 호환성 (Ubuntu, RHEL, CoreOS, 온프레미스, Google Kubernetes Engine)
  • 애플리케이션을 빠르고 쉽게 배포하고 관리할 수 있는 작고 유연한 분산형 MS서비스
  • 각 개별 컨테이너에 보장된 용량을 제공하는 리소스를 격리

Kubernetes의 핵심 구성요소

  • Node - 가상머신
  • Pod - 하나 이상의 컨테이너로 구성되고 단일 단위로 실행되는 애플리케이션 관리용 모듈
  • API 서버
  • 라벨은 피드와 같은 객체에 첨부되는 키/값 쌍
  • 볼륨 - 여러 컨테이너를 동시에 실행하기 위한 리소스
  • kube-scheduler - pod를 추적하고 pod가 실행될 가상 머신을 선택
  • kube-controller-manager - 노드 및 포드에서 컨트롤러를 실행하기 위한 것
  • kube-proxy – 포드의 트래픽 라우팅 관리를 담당
  • kubelet – 포드 상태와 컨테이너 실행을 모니터링
  • 컨테이너 런타임

    이러한 구성 요소는 추가 도구를 사용하여 자동으로 설치하거나 수동으로 개별적으로 설치할 수 있습니다. 
    API를 사용하여 컨테이너와 통신하고 측정항목을 가져온 다음 시작, 중지 또는 강제 종료 명령을 실행합니다.

Kubernetes 애플리케이션 작동 방식

Kubernetes는 컨테이너를 자동으로 구성하고 관리합니다. 

이 프로세스를 컨테이너 오케스트레이션이라고 합니다. 버튼 하나로 애플리케이션을 원래 버전으로 되돌리거나 성능을 높이거나 애플리케이션의 특정 부분을 업데이트할 수 있습니다.

 

Kubernetes가 컨테이너에서 애플리케이션을 실행하려면 런타임 환경을 갖추고 있어야 합니다. 
Containerd, Docker, rkt 또는 runc와 같은 소프트웨어일 수 있습니다.

Kubernetes에 필요한 가장 중요한것은 실행 중인 Pod간에 노드 리소스를 동적으로 배포하는 것 입니다.

이 프로세스를 구현하기 위해 Kubernetes cAdviso를 사용하여 각 노드에서 성능 및 리소스 사용(CPU 및 RAM 지속 시간, 파일 및 네트워크 시스템의 부하)에 대한 정보를 수집합니다.

 

Kubernetes의 중요한 부분은 Pod에 수집된 애플리케이션 컨테이너를 자동으로 시작, 중지 및 관리하는 Kubelet 구성요소 입니다. 포드에 문제가 발생하면 Kubelet는 노드에서 포드를 재배포하고 다시 시작하려고 시도를 하게 됩니다.

정리

- 프로젝트에 수십 또는 수백 개의 컨테이너가 있는 경우 Kubernetes를 사용할 가치가 있습니다.

- Kubernetes 자체는 구성에 따라 리소스를 확장할 시기, 프로젝트에 새 용량을 추가할 시기 등을 결정

- Kubernetes 인프라를 유지 관리하는 것은 비용이 많이 드는 노력이며 강력한 전문가 팀이 필요합니다.
내부 팀에 많은 돈이 지출될 것이며, 외부 직원이 있으며 잘못된 계약자를 선택할 위험이 높습니다.

 

즉, 각 상황을 고려하여 프로젝트에 넣을 것이지 잘 판단해서 사용하는 것이 최선의 선택입니다.

감사합니다.

728x90
반응형

'Data Engineer' 카테고리의 다른 글

mongo db란?  (0) 2023.09.22
Flask란? (Flask 설치방법)  (0) 2023.09.21
데이터 웨어하우스(Data Warehouse)와 데이터 레이크(Data Lake)의 차이점  (0) 2023.09.15
정형 데이터 vs 반정형 데이터 vs 비정형 데이터  (0) 2023.09.15
Apache Spark란?  (0) 2023.09.08
'Data Engineer' 카테고리의 다른 글
  • mongo db란?
  • Flask란? (Flask 설치방법)
  • 데이터 웨어하우스(Data Warehouse)와 데이터 레이크(Data Lake)의 차이점
  • 정형 데이터 vs 반정형 데이터 vs 비정형 데이터
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (146)
      • python (45)
        • selenium (4)
        • algorithm (9)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (9)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
Kubernetes란?
상단으로

티스토리툴바