쿠버네티스 Kubernetes
Kubernates란?
- 컨테이터 오케스트레이션 툴
- 컨테이너를 쉽고 빠르게 배포/확장할 수 있게 해주고, 관리를 자동화해주는 오픈소스 플랫폼, 즉 컨테이너 관리 툴
- Docker가 컨테이너 기반의 가상화를 실현한 플랫폼이라면 Docker Container를 관리하는 것이 Kubernetes
Kubernates Cluster Architecture
- 여러대의 서버 -> 하나의 클러스터로 연결
- 쿠버네티스 마스터 = 컨트롤 플레인이 실행되는 클러스터의 두뇌.
- 쿠버네티스 마스터에서 컨테이터 스케쥴링, 서비스 관리, API 요청이 수행됨 (파드, 리소스 컨트롤러, 로드밸런서 관리)
- 쿠버네티스 워커노드 = 사용자의 워크로드 실행 마스터 관리 아래, 실제 pod같은 리소스가 생서되는 노드
- kubectl : 쿠버네티스를 다루기 위한 명령행 도구
관리형 Kubernetes vs 자체 호스팅?
- Kubernetes를 자체적으로 구축(=자체 호스팅)도 가능하지만 아키텍처 구축 후 지속적인 관리가 필요하다. 설치의 복잡함, 쿠버네티스의 빠른 업데이트도 문제다.
- 따라서 관리형 쿠버네티스 추천-> AWS의 EKS, Google의 GKE, Azure의 AKS
Kubernetes Object
- Object란 쿠버네트가 상태를 관리하기 위해 대상으로 정한 것을 뜻함
- Pod : 쿠버네티스의 가장 작은 배포 단위. 컨테이너의 모임. 하나 이상의 컨테이너로 구성
- Deployment : 애플리케이션 배포의 기본 단위가 되는 리소스, Pod를 관리한다
- Service : Pod를 외부에 노출시켜주는 로드밸런서
위의 오브젝트들은 yaml 파일로 정의하여 kubectl 명령어로 반영한다.
Nginx 서비스를 배포하려면?
1. Deployment를 정의하여 Nginx 컨테이너를 담은 pod를 띄운다
2. pod를 LoadBalancer Type의 Service를 통해 배포한다.
3. 자동 생성된 ELB를 통해 Nginx가 배포된 것을 확인한다.