[쿠버네티스] 개요

Parker cho·2022년 6월 21일
0

DevOps

목록 보기
2/3

왜 쿠버네티스 인가?

모놀리식 아키텍처

  • 전통적인 아키텍처, 기존에 사용하던 서비스 방법
  • 서비스가 하나의 애플리케이션으로 돌아가는 구조
  • 기존의 개발 방식을 사용해 개발하여 간단히 배포
  • 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍처
  • 다양한 기능을 동작하는 서비스를 서버에서 실행하여 서비스

단점

  • 서버 스케일링을 할 경우
    • 기존의 애플리케이션을 그대로 복제
    • 불필요한 서비스까지 모두 복제
  • 종속적인 라이브러리의 충돌
  • 조금만 수정해도 전체 빌드 및 배포 필요
    • 소스코드 전체가 하나로써 동작
      • 작은 수정만 있더라도 전체를 빌드하여 다시 배포

마이크로 서비스 아키텍처

  • 서비스 단위 빠른 개발
  • 배포 용이
  • 서비스 단위 고효율 저비용

단점

  • 분산시스템 환경에서 Transaction 보장, 테스트, 배포, 관리 복잡

컨테이너

  • 가상머신을 사용해 각 마이크로 서비스를 격리 하는 기술
  • 컨테이너는 가상머신처럼 하드웨어를 전부 구현하지 않기 때문에 매우 빠른 실행이 가능함
  • 프로세스의 문제가 발생할 경우 컨테이너 전체를 조정해야 하기 때문에 컨테이너에 하나의 프로세스를 실행하도록 하는 것이 좋음

컨테이너 격리 기술

  • 리눅스 네임 스페이스와 cgroup 을 사용해서 가능하게 함
  • 각 프로세스가 파일 시스템 마운트, 네트워크, 유저, 호스트 네임등 시스템에 독립 뷰를 제공
  • 프로세스로 소비할 수 있는 리소스 양을 제한

도커(Docker)

  • 컨테이너 기술의 사실상 표준
  • 2014 가장 인기 있는 클라우드 오픈 소스 2위
  • 다양한 운영체제에서 사용 가능
  • 애플리케이션에 국한 되지 않고 의존성 파일 및 파일 시스템까지 패키징하여 빌드
  • 리눅스의 네임 스페이스와 cgroups 와 같은 커널 기능을 사용하여 가상화

컨테이너

이미지를 격리하여 독립된 공간에서 실행한 가상 환경

이미지

필요한 프로그램과 라이브러리, 소스를 설치 한 뒤 만든 하나의 파일

아키텍처

  • 도커 엔진:이미지, 네트워크, 디스크 관리
  • Containerd: OCI 구현체 (주로 runC)를 이용해 container를 관리해주는 daemon
  • 두 프로그램이 각각 돌아가기 때문에 Docker Engine을 재시작해도 각 이미지에 영향이 없음

한계

  • 서비스가 커지면 커질수록 관리해야 하는 컨테이너의 양이 급격히 증가
  • 도커를 사용하여 관리를 한다 하더라도 쉽지 않은 형태

쿠버네티스

  • 2014년 구글이 오픈 소스 공개
  • 구글의 컨테이너 운영 노하우가 담긴 오픈소스
  • 많은 시스템을 통합, 컨테이너를 다루기위한 API 제공

DevOps

  • 소프트웨어 개발과 IT 운영을 결합한 합성어
  • 기존의 분리된 소프트웨어 개발과 IT 운영의 협업으로 전체 라이프 사이클을 함께 관리함
  • 소프트웨어 개발팀과 IT 팀이 더 빠르고 안정적으로 소프트웨어를 빌드, 릴리즈 할 수 있도록 두 팀간의 프로세스를 자동화하는 일련의 과정
profile
true nobility is being superior to your former self

0개의 댓글