본문 바로가기

⭐ Kubernetes & EKS/Kubernetes (쿠버네티스)

쿠버네티스 Basic Architecture, 기본 아키텍처

# 쿠버네티스의 기본 아키텍처와 서비스에 대해서 알아보자.

- 쿠버네티스의 기본 구성은 pod, 레플리카셋, 디플로이먼트, 서비스(클러스터IP, 노드포트, 로드밸런서), Ingress

- pod : Pod 는 쿠버네티스에서 가장 기본적인 배포 단위로, 컨테이너를 포함하는 단위이다. 쿠버네티스의 특징중의 하나는 컨테이너를 개별적으로 하나씩 배포하는 것이 아니라 Pod 라는 단위로 배포하는데, Pod는 하나 이상의 컨테이너를 포함한다.

- ReplicaSet : 레플리카셋이란? 쿠버네티스에서 가장 유명한 특징중 하나는 "pod이 죽었을때 다시 복구해준다" 입니다. pod을 복구해주는 resource는 대표적으로 레플리케이션 컨트롤러(replication-controller)와 레플리카셋(replicaset)이 있습니다.

- 리플리카셋을 조회하면 DESIRED 5, CURRENT 5, READY 5 으로 조회가 된다. 그렇다면 해당 namespace의 pod를 조회해보면 5개의 pod가 생성되어 있는것을 확인 할 수 있다. 위에서 언급 했듯이 ReplicaSet의 주요 기능은 pod가 죽었을때 복구를 해준다 이다. ReplicaSet이 항상 pod의 상태를 살피고 문제가 있으면 재시작 및 상태 보존을 수행한다.

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get rs -n nginx
NAME                 DESIRED   CURRENT   READY   AGE
mynginx-69d586ff67   5         5         5       28d

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl get pod -n nginx
NAME                       READY   STATUS    RESTARTS       AGE
mynginx-69d586ff67-6hsnt   1/1     Running   3 (4h3m ago)   8d
mynginx-69d586ff67-8cmj7   1/1     Running   3 (4h3m ago)   8d
mynginx-69d586ff67-cwv8k   1/1     Running   3 (4h3m ago)   8d
mynginx-69d586ff67-rtrpt   1/1     Running   8 (4h3m ago)   8d
mynginx-69d586ff67-vtj7d   1/1     Running   3 (4h3m ago)   8d

- Deployment 란?

- Kubernetes에서는 각 Object를 독립적으로 생성하기 보다는 Deployment를 통해서 생성하는 것을 권장하고 있으며, Pod와 ReplicaSet의 기준정보를 지정할 수 있다.

- 이러한 Deployment는 Pod의 scale in / out 되는 기준을 정의한다.
Pod의 배포되고 update 되는 모든 버전을 추적할 수 있다.
배포된 Pod에 대한 rollback을 수행할 수 있다.
즉, 개념적으로 Deployment = ReplicaSet +Pod+history이며, ReplicaSet 을 만드는 것보다 더 윗 단계의 선언(추상표현)이다.