컨테이너란?
# cat > [파일명] 으로 파일을 작성할 수 있음
cat > app.js
- 컨테이너를 동작시키려면, 플랫폼이 필요하다.
리눅스 시스템 위에 도커를 설치해야함. 그 다음 도커 데몬을 start시키면 도커 플랫폼이 만들어진다. 그 이후로는 컨테이너를 빌드하거나 실행할 수 있다.
- 허브: 컨테이너를 저장해놓는 창고
- 컨테이너를 빌드해서 푸시
저장된 컨테이너를 사용하는 환경
- 허브에는 수 많은 컨테이너가 저장되어있음.
- 리눅스에 도커를 설치하여 도커 플랫폼을 구축하여야함.
- 도커 커맨드를 실행해서, 만들어놓은 컨테이너를 다운로드 받음
- 다운로드 받은 컨테이너를 start create하면 컨테이너가 동작함
$ docker pull smlinux/nodeinfo:v1
$ docker create --name app -p 80:8080 smlinux/nodeinfo:v1
$ docker start app
컨테이너를 동작하기 위해서는 도커 플랫폼이 필요하다.
가상머신과 컨테이너의 차이
가상머신 vs 컨테이너
가상머신
- Infrastructure > Hypervisor > Virtual Machine
- Hypervisor: Vmware, VirtualBox
- Hypervisor에 최적화된 운영체제
- Infra 하드웨어를 효율적으로 사용할 수 있음.
컨테이너
- Infrastructure > Host Operation > Docker > 컨테이너
- Host Opreation: 리눅스나 윈도우 같은 OS
- 확장과 축소가 빨라서 배포가 빠름
- 컨테이너의 주 목적: 배포(deploy)
멀티호스트 도커 플랫폼
- 한 대의 서버로 운영하는 것보단, 분산된 서버로 운영하는게 안정성이 있다.
- 일일히 엔지니어가 모든 컨테이너를 배치하고 관리한다 ? 쉽지 않음
- 여기서 오케이스트레이션 개념이 발생
오케스트레이션
- 중앙의 지휘자가 악기들을 지휘하는 개념
- 지휘자가 이 음악에 가장 잘 어울리는 구조로 배치하는 것 ➡ 음악의 선율을 맞추는것 = 오케스트레이션
컨테이너 오케스트레이션
- 애플리케이션을 웹 서비스에 적합하게 잘 배치해서 운영해주는 것
- 노드라는 컨테이너가 두 개 있을 때 (worker node1, worker node2)
- 지휘자가 있어야한다. ▶️ control plane
컨테이너 계층구조
- 지휘자의 역할을 하는게 Kubernetes
Kubernetes.io
Production-Grade Container Orchestration
Production-Grade Container Orchestration
kubernetes.io
- 쿠버네티스 공식 웹페이지
- K8s: K와 s 사이에 8개의 문자가 있어서 줄여부름
- 자동화된 컨테이너 배포, 스케일링과 관리
- 컨테이너화된 애플리케이션(node.js, node)를 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템
- 구글에서 15년간 프로덕션 워크로드 운영한 경험을 토대로 구축
- 구글이 일주일에 수십억 개의 컨테이너를 운영하게 해준 원칙에 따라 개발됨
- 쿠버네티스: 그리스어로 조타수(키잡이)
k8s 특징
- 워크로드 분리
- 어디서나 실행가능 - 온프레미스, 퍼블릭 클라우드(AKS, EKS, GKE 등)
- 선언적 API
선언적 API
- control plane : 쿠버야 웹 서버 3개 실행해줘
- docker worker node1
- docker worker node2
- 각각에 요청 보내고, 서버가 다운될 경우 정상적으로 실행될 수 있게 쿠버네티스가 알아서 실행해주는 것을 선언적 API라고 하며, 쿠버네티스의 가장 큰 특정
- 이로 인해 DevOps 가능, 심지어는 NoOps라고 함
- 쿠버네티스 개발자는, 쿠버네티스를 os라고 부르기도 함.
- => 실제로는 os가 아니지만 os의 역할을 하기 때문임
- os의 역할: 오퍼레팅 시스템 하드웨어에서 애플리케이션이 잘 동작할 수 있도록 해주는게 os의 역할인데, 하드웨어 위에서 애플리케이션이 제대로 잘 도와주는게 쿠버네티스이므로 os가 맞다고 생각.
'Development > k8s' 카테고리의 다른 글
[k8s] Container 정리와 Single / Multi Container Pod 생성 (1) | 2024.03.25 |
---|---|
[따배쿠] 기본 명령어 학습하기 (0) | 2024.02.13 |