쿠버네티스 썸네일형 리스트형 3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 6 3.6 파드를 안전하게 종료하기 위해 고려해야 할 사항 정상 혹은 비정상저긍로 종료되는 어떤 경우이든 쿠버네티스 입장에서 종료 요청이 오면 비동기적으로 종료 처리를 시작하고 Terminating 상태로 변경시키는 흐름으로 동작한다. 종료 처리는 SIGTERM 처리, SIGKILL 처리 순서로 실행된다. 또 이와 병행하여 서비스에서 제외되는 처리가 이루어진다. SIGTERM 처리, SIGKILL 처리와 서비스에서 제외되는 처리가 비동기로 이루어진다는 것은 파드를 종료할 때 서비스에서 제외되기 전 SIGTERM 처리를 할 수 있다는 의미다. 결국 서비스에서 제외되기 전에 파드가 클라이언트 요청에 정상적으로 응답될 수 없는 상태가 될 수 있다는 의미다. 파드는 그 특성상 자주 동작과 종료를 반복하기 때문에 이.. 더보기 3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 5 3.5 파드를 안전하게 외부로 공개하기 위한 헬스 체크 서비스를 통해 파드가 공개되면서 요청에 대해 정상적으로 응답하지 못하는 에러가 발생할 수 있다. 여기서는 이러한 경우를 방지하기 위한 두 가지 헬스 체크에대해 설명한다. 3.5.1 Readiness Probe로 파드와 연결된 서비스 모니터링하기 Readiness Probe는 애플리케이션이 공개 가능한지의 여부를 확인하고 정상이라고 판단된 경우 처음으로 서비스를 통해 트래픽을 수신한다. 예를 들어 헬스체크용 응답 페이지를 생성해두고, 해당 페이지에 접속해 상태 코드가 200으로 돌아오면 서비스를 통해 접속하는 방법을 사용할 수 있다. 예제 애플리케이션의 디플로이먼트용 매니페스트인 22_deployment_backend-app_k8s.yaml.templ.. 더보기 3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 4 3.4 설정 정보 등을 안전하게 저장하는 구조 3.4.1 환경 변숫값 전달 모던 애플리케이션을 개발하기 위한 방법론으로 The Twelve-Factor App이 있다. 그 중에 ‘애플리케이션 설정 정보는 환경 병수에 저장한다.’ 라는 정의가 있다. 이러한 정의를 두는 이유는 개발 환경, 스테이징 환경, 서비스 환경 등에서 취급하는 설정 정보가 달라 다시 빌드하는 일이 없도록 하기 위함이다. 쿠버테이스에서는 이와 같은 설정 정보를 파드의 환경 변수로 안전하게 전달하는 구조가 있다. The Twelve-Factor App The Twelve-Factor App Background The contributors to this document have been directly involved in the dev.. 더보기 3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 3 3.3 컨테이너를 외부로 공개하기 위한 리소스 쿠버네티스 클러스터에서 동작하는 컨테이너를 클러스터 외부에서 접속할 수 있는 방법이다. 3.3.1 파드를 서비스로 묶기 쿠버네티스에서는 서비스(Service) 리소스를 이용하여 파드 여러 개를 하나의 DNS 이름으로 접속할 수 있다. 또한, 서비스를 이용하면 해당 서비스를 구성하는 파드 중 정상적으로 동작하는 파드에만 요청을 할당할 수 있다. 예제 애플리케이션에서 사용한 23_service_backend-app_k8s.yaml는 다음과 같다. apiVersion: v1 # 서비스 리소스가 따르는 버전이다. kind: Service # 이 yaml 파일이 서비스 파일이라는 것을 정의한다. metadata: name: backend-app-service # 서비.. 더보기 3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 2 3.2 컨테이너를 동작시키기 위한 리소스 쿠버네티스에서 컨테이너를 동작시키기 위한 리소스에 대한 내용이다. 3.2.1 컨테이너를 동작시키기 위한 리소스의 종류 쿠버네티스는 여러 가지 오브젝트로 표현된다. 때문에, 기존의 인프라 구축이나 애플리케이션 배포와 달리 ‘작업’이 아닌 ‘오프젝트 상태 성언’이라는 형태로 환경을 정의할 수 있다. 쿠버네티스의 기본 오브젝트는 파드, 레플리카셋, 디플로이먼트, 서비스가 있다. 서비스를 제외한 기본 오브젝트와 기타 오브젝트를 설명한다. 즉, 3.2에서 설명할 것은 아래와 같다. 파드 디플로이먼트 레플리카셋 크론잡 잡 데몬셋 스테이트풀셋 네임스페이스 3.2.2 파드 쿠버네티스에서 프로그램을 동작시키는 최소 기본 단위이다. 파드는 하나 이상의 컨테이너를 합쳐 하나의 통합된.. 더보기 3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 1 3.1 목적과 내용 이전에 구축한 애플리케이션의 환경과 비교하면서 이론적인 내용으로 설명한다. 이전에 구축한 순서는 다음 그림과 같다. 3.1 목적과 내용 이전에 구축한 애플리케이션의 환경과 비교하면서 이론적인 내용으로 설명한다. 이전에 구축한 순서는 다음 그림과 같다. 더보기 2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 3 2.3 데이터베이스 설정 데이터베이스를 생성하고 DDL 적용 등 애플리케이션에서 사용하기 위한 설정을 수행한다. 수행할 작업은 다음과 같다. 데이터베이스와 배스천 호스트(Bastion Host) 구축 세션 관리자를 이용한 배스천 호스트 접속 배스천 호스트상에 필요한 도구 설치 배스천 호스트상에 깃 리포지토리 클론 데이터베이스 접속과 DDL 및 예제 데이터 블러오기 2.3.1 데이터베이스 환경 설정 예제 애플리케이션에서는 Amazon RDS로 PostgreSQL을 구축하여 사용한다. Amazon RDS에는 데이터베이스가 설치된 OS에 로그인할 수 없는 등 데이터베이스 환경 관련 제약 사항이 존재한다. 그래서 데이터베이스 관리용 서버로 배스천 호스트를 구축하여 사용한다. 배스천 호스트는 EC2로 구축한다. .. 더보기 2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 2 EKS를 이용하여 AWS에 쿠버네티스 클러스터를 구축하고 예제 애플리케이션을 배포하여 동작을 확인한다. 2.2.1 기본 리소스 구축 2.2.1.1 사용할 도구 설치 로컬 환경에 다음의 도구를 설치해야 한다. AWS CLI eksctl kubectl git 설치를 완료하고 다음 그림과 같이 도구의 버전을 확인한다. 2.2.1.2 소스 코드 다운로드 예제에 필요한 모든 자원은 깃을 통해 다운로드 받을 수 있다. git clone 2.2.1.3 기본 리소스 생성 방법 CloudFormation을 이용해 VPC 등의 기본 리소스를 생성한다. 우선 AWS 관리 콘솔 검색에서 CloudFormation을 검색한다. 그리고, 아래 사진 처럼 리전을 서울로 설정하고 스택 생성을 누른다. 아래 사진처럼 준비된 템플릿 →.. 더보기 이전 1 2 3 다음