container orchestration
- 서버의 상태를 관리하기 위한 노력
- 중앙제어 (master-node)
- 클러스터 단위로 추상화해서 관리
- master server를 이용하여 관리자가 master server에 명령하면 master가 클러스터에 명령함
- 상태 관리
- ex. 컨테이너가 3개였으면 좋겠어 -> 하나가 죽으면 새로운 하나를 생성
- 배포 관리
- 여유로운 서버를 찾거나 생성하여 스케줄링을 할 수 있음
- 배포 버전관리
- 각 컨테이너들의 버전을 중앙에서 관리할 수 있음
- 서비스 등록 및 조회
- 볼륨 스토리지
kubernetes (k8s)
- 컨테이너 기반 서비스 배포/스케일/관리 자동화를 해주는 오픈소스 프레임워크
- 구글에서 사용하던 Borg 서비스를 오픈소스화함
- 클라우드 on-prem 모두에서 잘 동작
- 모든 컨테이너가 가능하지만 주로 docker container들이 대상이 됨
- 물리서버나 가상서버 위에서 모두 동작
- 지금은 Cloud Native Computing Foundation이라는 비영리 단체에서 운영
- 클라우드 환경에서 어떻게 소프트웨어를 배포하는 것이 효율적일까?
- 컨테이너, 서비스메시, 마이크로서비스, API, DevOps, On-demand Infra
- 클라우드 환경에서 어떻게 소프트웨어를 배포하는 것이 효율적일까?
- 가장 많이 사용되는 컨테이너 관리 시스템
- k8s위에 기능을 추가한 container orchestration 툴들이 생겨남
- 확장성이 좋아서 다양한 환경에서 사용됨
- 머신러닝: Kubeflow
- CI/CD: Tekton
- Service Mesh: Istio
- Serverless: Kubeless
- 다수의 서버에 컨테이너 기반 프로그램을 실행하고 관리
- 컨테이너 기반 프로그램 == Docker Container
- 보통 Docker와 k8s는 같이 사용됨
- Pod: 같은 디스크와 네트워크를 공유하는 한 개 이상의 컨테이너들의 집합
Pod
- k8s 사용자가 사용하는 가장 작은 빌딩 블록
- 같은 pod 안에서는 디스크와 네트워크가 공유됨
- pod는 네트워크 주소를 갖는 self-contained server
k8s 컴포넌트
쿠버네티스를 배포하면 클러스터를 얻는다.
쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합, 모든 클러스터는 최소 한 개의 워커노드를 가진다.
워커 노드는 애플리케이션의 구성요소인 파드를 호스트한다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리한다. 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행하므로 내결함성과 고가용성이 제공된다.
--아직 공부중--
반응형