• 쿠버네티스 쓰는 이유 :
    • 서버가 점점 더 커지면서 관리하기 힘들어짐, 서버를 나눠서 관리하자 : 마이크로 서비스
  • 마이크로 서비스 장점 :
    • 배포 시 개별적으로 가능
    • 수평 수직 확장도 개별 서비스에 적용 가능
    • 인풋과 아웃풋만 확실하면 되기 때문에 어떤 시스템을 쓰든 상관 없음.( 동기 Http 통신이나 비동기 AQMP (advanced Queue Messaging Protocol 이용)
  • 마이크로서비스 단점 :
    • 여러 서버가 같이 일해야 하므로 상호 종속성의 수가 훨씬 많아짐. 이에 대한 관리가 필요
    • 버그 추적 어려움 → zipkin 같은 분산 추적 시스템으로 해결 가능
  • 쿠버네티스가 해결 해주는 것 들:
    • 같은 머신에서 실행되는 다른 소프트웨어가 상충 되는 라이브러리 버전을 이용하는 것
    • 가상머신으로 각 서비스 마다 환경을 다 만들어 주지 않아도 됨. ( 컨테이너 기술 )
  • 컨테이너와 가상머신 비교
    • 컨테이너가 훨씬 가벼움
    • 가상머신은 시스템 프로세스도 같이 실행해야 함. 컨테이너는 호스트 OS위에 실행되는 하나의 격리된 프로세스.
    • 컨테이너 : 하나의 리눅스 커널에 시스템콜, 가상머신 : 완전 격리, 보안에서는 가상머신 이점
  • 컨테이너는 분리를 어떻게 해?
    • 리눅스 네임스페이스
      • 시스템(파일, 프로세스, 네트워크 인터페이스, 호스트 이름 등)에 대한 독립된 뷰만 볼 수 있도록 한다.
      • 마운트, 프로세스 ID, 네트워크, 프로세스 간 통신, 호스트와 도메인 이름, 사용자 ID
    • 리눅스 컨트롤 그룹
      • 가용 리소스(CPU,메모리,네트워크 대역폭)의 양을 제한
      • 리눅스 커널의 cgroups 기능을 이용해 프로세스가 사용할 리소스를 제한할 수 있음. 다른 프로세스에 필요한 리소스를 쓰는 것을 방지 할 수 있음.
  • 도커 컨테이너
    • 도커는 컨테이너 이미지로 서비스를 패키징하고 어떤 환경에서든 동일하게 실행 될 수 있게 해줌.
    • 레이어 기술이 들어가서 레이어의 재사용이 가능, 같은 레이어가 포함된 이미지를 여러 개 받아도 그 레이어는 재사용 함.
    • 도커 용어
      • 이미지 : 서비스와 환경을 패키징, 환경설정 등도 메타데이터로 포함
      • 레지스트리 : 이미지를 공유하는 저장소
      • 컨테이너 : 이미지를 이용해서 실행한 일반적인 리눅스 컨테이너 그렇기 때문에 완전 격리 상태
      • 레이어 : 이미지의 구성요소 동일한 레이어는 공유 될 수 있음. 하지만 읽기 전용 이기 때문에 새로운 내용이 추가되면 기존 레이어의 복사본에 덧붙여서 새로운 이미지를 만듦. ( union file system을 이용함 )
    • 일반적으로 이미지는 도커를 실행하는 모든 리눅스 시스템에서 실행 할 수 있지만, 하나의 host OS에서 실행 되기 때문에 특정 커널 버전을 필요로 하는 이미지는 실행하지 못할 수 있다. 이럴 경우 새로운 가상머신이 필요하게 된다.
  • 컨테이너 오케스트레이션
    • 컨테이너를 관리하기 위한 시스템
    • 쿠버네티스가 컨테이너 오케스트레이션에 좋지만 그 본질의 역할은 아니다.
    • 컨테이너가 여러 클러스터 노드에 서비스를 실행하기 위한 가장 좋은 방법인 것일 뿐.

+ Recent posts