본문 바로가기

IT공부/platform

[kubernetes] 쿠버네티스 아키텍처 (2)

728x90

 

 

https://youtu.be/-gIyfII5eak?list=PLIUCBpK1dpsNf1m-2kiosmfn2nXfljQgb 

 

 

오브젝트 정리

 

 

 

 

 

 

 

컨테이너를 감싼 단위를 말하며, 쿠버네티스에서 가장 작은 배포 단위

전체 클러스터에서 각 Pod에게 고유한 IP를 할당한다

여러개의 컨테이너가 하나의 Pod에 속하는 경우가 있다

여러개의 컨테이너가 하나의 Pod에서 관리

 

 

 

 

ReplicaSet

: 여러개의 Pod을 관리함

replicas 값을 4로 변경 하면 신규 pod을 4개로 만들어 유지한다

replicas 의 값을 유지하기 위해 pod을 신규 생성 또는 제거 하며 갯수를 유지한다

 

 

Deployment

: 이 replicas Set 의 배포 버전을 관리 함

 

버전 관리 유지 방법은 내부적으로 ReplicaSet을 이용한다

 

내부적인 알고리즘이라기보다는 ReplicaSet 의 특성을 이용하여 버전 관리한다

 

 

 

다양한 Workload

 

 

 

Service - ClusterIP

클러스터 내부에서 사용하는 프록시

pod을 load balancer 함

pod은 동적이지만 서비스는 고유IP를 가진다

고유IP에 서비스 ClusterIP가 있으면 각 Pod들이 죽거나 유지할 때 임의의 IP들로 연결되어있다(한 pod에서 변경이 안되는듯) 그래서 pod하나 삭제하면 그 해당 ip도 삭제

 

클러스터 내부에서 서비스 연결 할 때는 DNS를 이용한다

 

 

 

 

 

 

각각에게도 IP가 있다는 것

근데 이 클러스터IP는 내부에서만 접근이 가능하므로

외부에서 연결 할 수 있는 NodePort가 존재한다

 

 

NodePort

: 이는 노드(host)에 노출되어 외부에서 접근이 가능하다

 

Web browser -> Service(NodePort) -> Service(ClusterIP)

 

 

 

 

LoadBalancer

하나의 IP주소를 외부로 노출 시켜준다

 

 

 

Ingress : 도메인 또는 경로별 라우팅 (Nginx, HAProxy, ALB emd)

 

 

 

 

 

일반적으로는 

Deployment를 만든다 그러면 안에 ReplicaSet과 그 내부에 pod이 있는 거고,

해당 Deployment에 Service(ClusterIP)를 붙인 뒤,

외부에서 접근할수 있는 Service(NodePort)를 붙여주고

이 NodePort Service 모음들을 Service(LoadBalancer) 를 Ingress에 붙여준다

 

그러면 클라이언트가 접속할때 DNS를 통하여 해당 서비스를 이용할 수 있다

 

 

 

 

그 외의 기본 오브젝트들은

 

Volume - Storage (EBS, NFS ....)

Namespace - 논리적인 리소스 구분

ConfigMap/Secret - 설정

ServiceAccount - 권한 설정

Role/ClusterRole - 권한 설정 (get, list, watch, create ...)

등등 엄청 많다

 

 

이런 추상화된 오브젝트들이 굉장히 많이 있다

728x90