프로젝트 개발하던 중 프론트에게 예외 처리 하는 게 힘들다는 연락을 받았다. 지금까지 백엔드 개발을 하며 예외 처리는 아래와 같이 처리했다. - AppException@Getterpublic class JikgongException extends RuntimeException { private final HttpStatus status; private final String errorCode; private final String errorMessage; // ErrorCode 생성자 public JikgongException(ErrorCode errorCode) { super(errorCode.getErrorMessage()); this.stat..
StatefulSetStateless Application: Web Server가 여기 해당된다. (APACHE HTTP Server, Nginx, IIS app이 여러개 배포되더라도 모두 동일한 기능을 수행 그래서 app이 죽으면 단순히 동일한 app을 하나 더 만들면 된다. 반드시 볼륨이 필요하진 않음. 만약 app의 로그를 영구적으로 저장하고 싶은 경우 각각의 볼륨이 아닌 단일 볼륨으로 충분한 경우가 많음. 들어오는 트래픽을 여러 앱에 동일하게 분산시켜야 함. (네트워크의 연결은 단순 분산 용도) 즉, 쿠버네티스의 ReplicaSet에 해당함 Stateful Application:Database 등이 여기 해당된다. (mongoDB, MariaDB, redis app이 여러개 배포되더라도 각각의..
프로비저닝(provisioning)이란?쿠버네티스에서 프로비저닝은 일반적으로 저장소와 관련하여 특정 애플리케이션이나 서비스의 요구 사항을 충족시키기 위해 필요한 저장소 자원을 할당하고 구성하는 과정을 의미한다. 쿠버네티스엔 2가지 유형의 프로비저닝이 있다. 1. 정적 프로비저닝정적 프로비저닝에서는 클러스터 관리자가 수동으로 Persistent Volume(PV)을 생성하며, 해당 PV의 용량, 액세스 모드 및 저장소 유형과 같은 하위 저장소의 세부 정보를 지정한다. 이러한 PV는 사용자가 생성하는 Persistent Volume Claim(PVC)에서 요청될 수 있다. 사용자가 PVC를 생성하면 쿠버네티스는 해당 PVC의 요구 사항과 일치하는 사용 가능한 PV에 바인딩한다. 2. 동적 프로비저닝..
쿠버네티스 클러스터 안에는 DNS Server가 별도로 존재한다. DNS Server에는 Service의 도메인 이름과 IP가 저장되어 있기 때문에 Pod가 Service1의 도메인을 질의하면 ip를 알려준다. 만약 Pod가 User1을 질의하면 어떻게 될까?? 내부망에도 DNS서버 구축되어 있을 것이고 내부 서버들이 생겼을 때 해당 이름들이 DNS에 등록된다. Pod가 User1을 찾았을 때 쿠버네티스는 자신의 DNS Server에 User1이 없기 때문에 상위 DNS Server에서 이름을 찾게 되고 ip를 알 수 있다. 마찬가지로 외부 네트워크도 같은 메커니즘으로 동작한다. Headless아래 그림과 같이 Pod가 Pod1에 접근하고 싶다면 어떻게 할 수 있을까? headless를 이용하면..
1. Pod의 LifeCycle1) Pending 단계제일 먼저 Pod가 Node에 정상적으로 할당되면 PodScheduled가 True가 된다. 스케줄링 되는 방식은 직접 할당 & 쿠버네티스가 자원 상황에 따라 할당하는 방식이 있다. 이후에 container가 실행되기전에 초기화 시켜야할 내용이 있다면 실행되는 InitContainer가 실행(볼륨/보안)되고 Initialized가 True가 된다. Init할 내용은 Pod의 yml정의 spec에 initContainers라는 항목에서 정의할 수 있다. 이후 container의 이미지를 다운로드한다. 위 과정을 수행하면서 container의 status는 waiting이고, reason은 container creating이다. 2) RunningP..
개요이전에 쿠버네티스의 오브젝트에 대해 학습했었다.쿠버네티스는 크게 오브젝트와 오브젝트를 관리하는 컨트롤러로 나뉜다고 했었는데 이번엔 컨트롤러에 대해 정리하고자 한다. https://dgjinsu.tistory.com/68 [k8s] 쿠버네티스의 기본 오브젝트 (Pod, Service, Volume, Namespace)쿠버네티스는 크게 오브젝트(object)와 오브젝트를 관리하는 컨트롤러(controller)로 나눠져 있다.오브젝트엔 어떤 것들이 있고 각각의 오브젝트에 대한 내용을 간단하게 정리해보았다. 쿠dgjinsu.tistory.com 컨트롤러란?쿠버네티스의 컨트롤러는 쿠버네티스 클러스터의 상태를 관리하고 원하는 상태로 유지하기 위한 중요한 구성 요소이다. 현재 클러스터의 상태를 지..