[TIL]Openstack,Docker/Kubernetes

meek·2023년 3월 20일
0

/*elice*/

목록 보기
12/21

🐢 Openstack

  • Open Source Cloud Computing Infrastructure
  • 클라우드 운영체제
  • 컴퓨터, 저장소, 네트워크 리소스를 관리하는 클라우드 운영 시스템
  • 대시보드 제공하는데 관리자가 컨트롤할 수 있는 권한을 주는 것

✨ 오픈스택-Core Project 종류

1. Nova

  • 컴퓨터 기능을 관리하는 프로젝트

    명칭설명
    APIHTTP 요청을 받아서 코멘드로 변환하고 oslo.messaging 혹은 HTTP로 다른 컴포넌트와 통신
    Schedular어떤 호스트가 어떤 인스턴스를 관리할지 결정
    Networkip 포워딩/브리지/Vlan 관리
    Compute하이퍼바이저와 버추얼 머신간의 통신 관리
    Volume스토리지 관리

2. Swift

  • 오픈스택 오브젝트 스토리지로 비정형성 데이터를 저장하기 적합

  • 각각의 오브젝트들은 고유한 URL을 갖고 API로 제어

  • 멀티 테넌트로 구현 가능하며 저장 공간에 제약이 없음
    👉 계정마다 저장 공간을 할당 받는 것이 아닌 모든 저장 공간을 같이 사용

  • 각각의 object(데이터)들을 특정 Account에 접근이 가능한지 불가능한지 권한 설정 가능

3. Cinder

  • Block Storage
  • Nova에서 생성된 인스턴스에 확장하여 사용할 수 있는 저장 공간을 생성 및 삭제하고 인스턴스에 연결할 수 있는 기능을 제공

4. Glance

  • 오픈스택에서 운영체제 이미지를 관리
  • 다양한 하이퍼바이저에서 사용할 수 있는 VM 이미지를 관리하고, VM에 설치된 OS 보관 및 관리
  • glance-api로 이미지를 등록, 삭제 및 관리
  • glance-api를 사용하여, glance-registry, galnce-database에 이미지를 관리
  • 이미지 등록 시, glance-registry를 통하여 glance-database에 등록
  • 등록된 이미지 사용 시, glance-database에 바로 사용 요청

5. Keystone

  • 물리서버 내 컴퓨트, 이미지, 네트워크, 스토리지와 같은 자원들에 대한 인증관리
  • 사용자 인증을 통하여 물리 서버내의 자원을 사용할 수 있도록 관리
  • Token Backend는 사용자 별 Token을 관리
  • Catalog Backend는 오픈스택의 모든 서비스의 End-point URL을 관리
  • Policy Backend는 테넌트, 사용자 계정 및 롤 등을 관리
  • Identity Backend를 통하여 사용자 인증을 관리

6. Horizon

  • 오픈스택 대시보드 서비스
  • Horizon은 사용자가 웹 UI를 통하여 인스턴스 생성, 삭제 및 관리 드을 쉽고 빠르게 처리할 수 있도록 해 주는 웹 서비스
  • Horizon은 아파치 웹 서버를 사용하며, 대시보드는 파이썬 장고 프레임워크로 구현

7. Neutron

  • 기존 오픈스택의 네트워크 서비스는 Nova-network가 담당했으나, SDN(Software Defined Network) 개념이 들어오면서 별도의 네트워크 프로젝트로 분리
  • Neutron은 Neutron 서버, 에이전트, 플러그인, 메시지 큐, 네트워크 프로바이더, 데이터베이스로 구성
  • Neutron은 다양한 네트워크 플로그인과 네트워크 모델을 지원

✨ Docker/Kubernetes

🐢 Docker

  • 컨테이너 기반의 오픈소스 가상화 플랫폼
  • 컨테이너 관리를 위한 추가적인 기능 제공 및 관리의 편의성을 높임
  • 도커 0.9버전까지는 컨테이너 기술로 리눅스 컨테이너를 사용했지만 이후 자체 개발 엔진을 통한 컨테이너 환경 구축

🐢 컨테이너

  • 단일 Host OS 위에서 여러 개의 프로세스가 고립된 공간에서 동작하는 구조

  • 컨테이너를 위한 환경은 커널 공간사용자 공간으로 분리되며 사용자 공간을 컨테이너라고 칭함

  • 커널 공간은 물리적 자원을 관리

  • 사용자 공간은 사용자 프로세스가 실행되는 공간(컨테이너)

  • 대표적인 기술로 리눅스 컨테이너(LXC)

  • 운영체제에서 애플리케이션(프로세스)을 분리하여 동작

  • 컨테이너 공간의 분류는 리눅스 커널의 cgroup과 namespace를 이용

    • Namespace
      • 단일 프로세스용 자원 격리
      • 프로세스 전용 자원처럼 제공
    • Cgroup
      • 프로세스 그룹의 cpu, 메모리와 같은 시스템 자원을 격리

🐢 컨테이너의 장점

  • 프로세스만 동작시키는 구조이기 때문에 생성, 시작, 종료가 빠름
  • 하나의 OS에서 동작하기 때문에 자원을 효율적으로 사용가능
  • 이식성이 높음

🐢 컨테이너의 단점

  • 컨테이너는 커널을 HOST OS와 공유해야 하기 때문에 HOST OS에 종속적
    ex. 리눅스 컨테이너에서는 리눅스 외 OS동작 불가
  • 컨테이너별 커널 구성이 불가(커널 공유)
  • 각각의 환경을 VM처럼 구성하기는 쉽지 않음

🐢 VM vs 컨테이너

VM컨테이너
HOST OS 위에서 Hypervisor를 통해 자원을 가상화하여 VM을 동작HOST OS에서 프로세스를 위한 공간을 별도로 제공
HOST OS 위에 Guest OS가 동작하는 구조공통 부분만을 패키징하여 컨테이너로 제공

🐢 Docker Server와 Client

Docker Server(Daemon)Docker Client
Host machine에서 컨테이너를 관리하고 실행하는 데몬Docker와 사용자 간 인터페이스 제공
사용자와 Docker Client를 통해 연결사용자 명령을 받아 Docker Daemon으로 전달(소켓 통신사용)

🐢 Kubernetes

  • Private OpenStack과 동일한 역할
  • Google이 Linux Foundation을 통해 Cloud Native Computing
  • 컨테이너화 된 응용 프로그램의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템

🐢 Micro Service

  • 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식

  • 클라우드에서는 컨테이너 방식으로 많이 사용

    장점단점
    분산되어 있어 장애 시 관리에 좋음배포의 복잡성
    (기능의 개별 구성)
    새로운 기능 추가 구조 변경 등에 좋음각 기능 간의 인터페이스 네트워크 고려 필요
    기능 단위로 되어 있어 분산 작업 가능데이터 관리의 복잡성

🐢 Serverless Computing

  • 애플리케이션 개발자가 직접 서버를 관리할 필요없이 기능 단위의 마이크로서비스를 구성하여 애플리케이션을 개발할 수 있는 컴퓨팅 환경
  • Saas보다는 더 애플리케이션만 고려하는 아키텍쳐

🐢 Serverless Computing 종류

  • 서비스형 서버리스(Serviceful Serverless) : BaaS
    - 데이터베이스, 소셜 서비스 연동 파일 관리 등 다양한 기능들을 제공하는 형태
  • Functions as a Service : Faas
    - 사용자가 작성한 코드를 업로드하고(기능 단위) 서버 요청 시 동작하는 형태
    - 요금도 사용할 때만 지불

    장점단점
    비용이 효율적벤더 종속성이 높음
    구축이 용이
    (코드 작성 업로드)
    지속적인 서비스에 용이하지 않음
    리소스 효율
    (자체적인 스케일 관리)
    디버깅 어려움
    인프라 구축 필요없음
profile
hello, world!

0개의 댓글