몽자비루 ㅣ 2024. 5. 13. 16:18
- 실습 예제
- https://github.com/237summit/Getting-Start-Kubernetes
- 쿠버네티스 소개
- 쿠버네티스란?
- 컨테이너를 도커 플랫폼에 올려서 관리 + 운영 + 클러스터 서비스를 지원해주는 것을 의미함
- container orchestration
- 컨테이너란?
- nodejs 기반의 app.js 를 실행하기위해
Dockerfile 에 nodejs 기반을 생성 후 app.js 복사, node > app.js 순서로 실행
- 컨테이너 동작을 위한 플랫폼이 필요함 (보통 도커, 로켓 등을 사용)
- 컨테이너 이미지 생성하기
- 컨테이너를 만들어서 저장소에 저장.
- docker platform 생성
- linux 시스템에 docker 설치
- docker deamon start
- 이후 container 빌드 및 실행이 가능한 상태.
- container 빌드
- docker hub 에 container 을 build하여 push
- 컨테이너가 hdd 에 생성 > docker build -t [container name : tag]
- 컨테이너를 hub에 업로드 > docker push [container name : tag]
- container 실행
- 외부 네트워크가 가능한 linux
- 컨테이너를 다운로드 > docker pull [container name : tag]
- 컨테이너 동작 > docker create --name app -p 80:8080 [container name : tag]
> docker start app
- 가상머신 VS 컨테이너
- 가상머신 (infrastructure + hypervisor)
- 하드웨어 인프라 위에 hypervisor 설치
- hypervisor : 단일 물리적 머신에서 여러 가상머신을 실행하는 데 사용할 수 있는 소프트웨어, Virtualbox, VM ware 등이 포함됨
- SW적인 기술을 사용해 가상 머신을 생성
- 가상머신 작동 방식
- 작동 방식
- 가장 적당한 하드웨어 용량을 할당시킴
- 리소스가 몰리는 경우 하드웨어 업그레이드
- 하드웨어를 효율적으로 사용할 수 있음
- 가상머신은 목적에 따라 애플리케이션이 동작함.
- 단점
- 다운되면 소용이 없음 > 버티컬하게 스케일업 대신, 수평 형태로 스케일 아웃 함.
- 리소스가 몰리는 경우, 웹 서버를 여러 개 할당함
- 컨테이너 (infrastructure + host operation + docker)
ㄴ host operation: 리눅스, 윈도우즈 같은 운영체제를 의미함
- 컨테이너 애플리케이션이 동작 (컨테이너 하나하나가 application)
- 빠르게 확장하고 빠르게 축소함 → 배포(deploy)를 목적으로 함
- 가상머신처럼 독립된 공간으로 실행되어 서로에게 영향을 주지 않음.
- 컨테이너 동작 구조
- 도커 플렛폼 올림 > 웹서버 실행 (웹서버 개수에 따라스케일 아웃이 쉬움)
- 멀티호스트 도커 플랫폼을 만들음 (클러스터링)
- system 하나에 컨테이너를 운영하는것이 불안함
- 도커시스템을 여러대 만듬 > 앱이 실행될때마다 분산 운영 시킴
- 컨테이너 배치를 자동으로 해주는 시스템 : 컨테이너 오케스트레이션
- 오케스트레이션
- 컨테이너 오케스트레이션
- 웹서버, 파이썬, node.js같은 앱을 가장 적합하게 배치하여 운영해주는 것.
- control plane을 두고 워커노드를 관리해주는 구조를 의미함
- 쿠버네티스는, 도커 폴랫폼의 컨테이너 관리/스케일링/운영하는 오케스트레이션.
- 쿠버네티스 공식 웹사이트
- https://kubernetes.io/
- 쿠버네티스의 특징
- 워크로드의 분리
- 컨테이너를 분리시켜 운영시키면서도 통신이 원활함
- 어디서나 실행 가능함.
- 온프레미스 서버, 퍼블릭 클라우드 등 모든 환경에서 실행할 수 있음.
- 온프레미스 서버
- 회사에서 서버를 이용해 컨테이너 설치 가능 장비를 생성
- 운영체제 설치
- 도커 설치
- 쿠버네티스 설치
- 사내에서 운영 가능함.
- 선언적 API
- 쿠버네티스 준비 상태에서 cotrol plane에게 요청하는 것.
- 나머지는 쿠버네티스에서 자동으로 실행함.
- 이 덕분에 DevOps, 심지어 NoOps 까지 가능함.