이 문서는 데브코스 교육 과정 중 학습한 주요 주제들에 대해 이해를 돕고 복습용도로 사용하기 위해 질문과 답변 형식으로 정리되었습니다.
Question
아키텍쳐
- Q-1) 아키텍쳐란 무엇인가?
- Q-2) 아키텍쳐가 중요한 이유는?
쿠버네티스의 서비스
- Q-1) 서비스(Service)란 무엇인가?
- Q-2) 서비스의 종류 어떤 것들이 존재하고, 사용 예시에 대해 설명해주시오
동적 수평 오토스케일링
- Q-1) 동적 수평 오토스케일링(Horizontal Pod Autoscaler)이란 무엇인가?
- Q-2) 동작 원리에 대해 설명해주시오
볼륨(Volumes)
- Q-1) 볼륨이란?
- Q-2) PV란?
- Q-3) PVC란?
Answer
아키텍쳐
- A-1) 지식을 공유하고 바꾸기 어려운 중요한 어떤 것. 설계 과정 중에 수행되는 다양한 의사 결정의 결과물
- A-2) 잘짜여진 아키텍쳐로 만들어진 소프트웨어는 내부 퀄리티가 좋기 때문에, 새로운 기능을 더 빠르게 추가할 수 있다.
쿠버네티스의 서비스
- A-1) 클러스터 내부에서 동작하는 애플리케이션을 클러스터 외부로 노출시키는 방법을 말한다
- A-2) ClusterIP, NodePort, LoadBalancer, Ingress가 존재한다. ClusterIP는 클러스터 내부 IP에서만 접근할 수 있게 한다. 클러스터 내부에서 다른 포드나 서비스와 통신할 때 사용된다. 따라서 테스트, 디버깅 등의 목적으로 제한하여 이용한다.
NodePort는 모든 워커 노드의 특정 포트를 할당하고, 이 포트를 통해 클러스터 외부에서 포드로 접근할 수 있게 한다. NodePort는 ClusterIP 위에 구축되며, 클러스터 내부, 외부 모두에서 접근 가능하다. 개발 또는 테스트 환경에서 클러스터 욉웨서 애플리케이션에 접근할 필요가 있을 때 사용된다.
LoadBalancer는 클러스터 외부에 존재하는 클라우드의 로드 밸런서를 사용하여 서비스에 대한 외부 접근을 가능하게 한다. NodePort와 ClusterIP 설정 위에 추가로 로드 밸런서를 구성한다. 프로덕션 환경에서 고가용성을 요구하는 웹 애플리케이션에 사용된다
Ingress는 단일 IP 주소를 통해 클러스터 내의 여러 서비스에 접근할 수 있도록 해주는 도구다.
동적 수평 오토스케일링
- A-1) 애플리케이션의 부하량에 따라 포드의 수를 자동으로 조절하는 쿠버네티스의 기능이다.
- A-2) 메트릭 서버(Metrics Server)로부터 포드와 노드의 리소스 사용 데이터를 수집하고, 이 데이터를 API를 통해 다른 컴포넌트에 제공되고, 동적 수평 오토스케일링이 설정되어 있는 컨트롤러에서 이 데이터를 전달받아 포드의 수를 자동으로 조절한다
볼륨(Volumes)
- A-1) 포드가 실행되는 동안 데이터를 저장하는 일종의 디렉토리. 컨테이너 내의 데이터는 재시작될 때 사라지는데, 이를 방지하기 위해 볼륨을 사용한다. 볼륨은 컨테이너와는 독립적으로 존재하여 데이터를 유지하며, 여러 컨테이너가 동시에 볼륨을 공유할 수 있다.
- A-2) PV(Persistent Volume)는 클러스터 내에 존재하는 스토리지를 추상화한 것으로, 사용자는 스토리지의 실제 구현 세부 사항을 몰라도 데이터를 저장할 수 있다.
- A-3) PVC(Persistent Volume Claim)는 PV에 저장된 데이터에 접근하고자 할 때 사용하는 요청이다. 사용자는 PVC를 통해 필요한 스토리지의 크기와 접근 모드를 요청할 수 있다. 쿠버네티스 시스템은 이 요청을 만족시킬 수 있는 PV를 자동으로 찾아 바인딩하고, 이 과정을 통해 사용자는 애플리케이션에 필요한 스토리지를 동적으로 할당받을 수 있다.