1.1 쿠버네티스와 같은 기술이 필요한 이유
monolith(모놀리스)
하나의 프로세스 프로그램을 만들어서 패키징하고 이를 운영팀한테 넘기면 운영팀이 배포하고 모니터링 하는 방식
서버에 문제가 생기면 운영팀이 사용가능한 다른 서버로 직접 마이그레이션
MSA(마이크로 서비스)
서비스가 작은 단위로 분리하여 구성하는 방식, 각각의 요소들을 개별적으로 개발/배포 가능
각각의 작은 애플리케이션을 모두 수동으로 관리하는 것은 어려운일이 되었기 때문에 쿠버네티스 환경을 통해 자동으로 서비스들을 관리/장애 대비 필요
1.2 컨테이너 기술 소개
1) 가상 머신
- 가상머신마다 게스트 OS 를 할당하여 환경을 분리하는 방식
- 가상 머신에 있는 애플리케이션은 게스트 OS 커널에 시스템 콜 요청
- 시스템 콜을 요청 받으면 하이퍼 바이저를 통해 호스트의 물리적 CPU 에서 명령 실행
2) 컨테이너
- 리눅스 네임스페이스 / cgroups 를 이용하여 파일시스템 및 환경을 분리하는 방식
- 컨테이너 모두에서 공유하는 호스트 OS 에서 시스템 콜을 수행
- 오버헤드가 낮은 장점이 있으나 동일한 커널을 사용하기 때문에 보안 위험이 있다는 단점이 있음
3) 도커
- 애플리케이션을 패키징, 배포, 실행하기 위한 컨테이너 기술 플랫폼
- 도커 이미지, 레지스트리, 컨테이너
- 부모 이미지로 컨테이너로 생성시 해당 이미지의 복사본이 최상위 레이어로 쌓여 복사본에 변경 사항 반영
1.3 쿠버네티스에서 애플리케이션 실행
1) 개발자가 앱 디스크립터 작성 : 컨테이너, 컨테이너 이미지, 해당 컨테이너를 몇 개 복제할 것인지, 어떤 컨테이너들을 같은 노드에서 실행할 것인지 등을 기재
2) 컨트롤 플레인(마스터)의 API 서버에 앱 디스크립터를 입력, 스케줄러가 워커 노드들의 상황을 파악해서 적절한 노드에 컨테이너 할당
3) 워커 노드 내에서 kubelet이 컨테이너 런타임(도커)에게 이미지 레지스트리에서 컨테이너 이미지를 가져와 실행하도록 지시
4) kube-proxy 는 동일한 컨테이너가 여러 노드에 떠 있을 때, 하나의 고정 ip 로 로드밸런싱 되도록 도와주는 역할 수행
'2023~ > 쿠버네티스 인 액션' 카테고리의 다른 글
Ch 06 볼륨: 컨테이너에 디스크 스토리지 연결 (0) | 2024.11.17 |
---|---|
Ch05 서비스: 클라이언트가 파드를 검색하고 통신을 가능하게 함 (0) | 2024.10.13 |
Ch04 레플리케이션과 그 밖의 컨트롤러: 관리되는 파드 배포 (0) | 2024.10.10 |
Ch03 파드: 쿠버네티스에서 컨테이너 실행 (0) | 2024.09.30 |
Ch02 도커와 쿠버네티스 첫 걸음 (1) | 2024.09.26 |
댓글