728x90
컨테이너의 이점
- 이동 가능성
- 클라우드 배포 가능 (EC2, Lambda, EKS, Elastic Container Service , AWS App runner)
- 확장성 (CPU 1개 → CPU4개, Scale up , Scale Out, Scale in) auto scaling
- 지속적 배포 선언형 형식
- 컨테이너는 마이크로 서비스에 적합 (모놀리스 -> 마이크로)
현업에서는 수천개의 호스트 수만개의 컨테이너로 관리가 되고 있을 것이다.
- 스케줄링
- 클라우드
- 네트워킹
- 로드 밸런싱
- 스토리지
- 보안
- 모니터링
- 로깅
쿠버네티스는 오픈소스 기반의 Google 에서 개발이 되었고 사용이 안정되었기 때문에 많이 사용한다.
컨테이너의 이점과 더불어 강력한 커뮤니티가 있다. 하지만 쿠버네티스의 런닝커브는 처음에 배우기가 어렵다고 할 수 있다.
PodSpec 으로 Pod 를 정의
Pod 는 하나이상의 컨테이너로 구성된 그룹이다. YAML 기반의 매니페스트 파일을 사용해서 정의한다.
# pod 는 하나이상의 컨테이너로 이루어진 집합.
# yaml 파일 형태로 저장
apiversion : v2
kind : pod # 나는 무엇을 만들거에요?
metadata :
name : webapplication
labels:
app.kubernetes.io/name: webapp
spec:
container:
- name : nginx
image : nginx:1.25.1
ports :
- containerPort : 8080
# 따로 지정이 안되어있다면 Dockerhub 에서 가져온다.
# Dockerfile -> image -> [ Registry(이미지 저장소) / Repository ]
Pod들은 하나의 ip로 구성이 되어있다. 서로간의 통신을 위한 IP 대역을 가지고 있다. 하지만 접근을 하지 못하는 IP 이기 때문에 이때 사용하는 것이 서비스이다.
서비스의 형태
app : backend
ip 10.100.0.15
port : 80
targetPort : 8080
Kubernetes 의 내부
쿠버네티스 클러스터를 실행하는 시스템을 시스템 노드라고하고, 노드는 제어, 데이터영역으로 구분 된다.
제어영역 : 클러스터를 관리 , 데이터영역 : 애플리케이션을 실행
컨트롤러 - 제어루프
컨트롤러는 현재 상태가 원하는 상태와 같은지 확인한다. Replicaset, DaemonSet과 같은 일부 컨트롤에 대해 학습한다.
728x90