컨테이너 개발을 익히기 위한 5단계 Ch.05

컨테이너 API

컨테이너 API는 컨테이너를 블랙박스처럼 다룰 수 있게 해주는 인터페이스이다.

이는 k8s 환경에서도 사용된다.

컨테이너에서 사용할 수 있는 API들

컨테이너 API는 모두 필수적으로 구현할 필요는 없다.

애플리케이션의 특성에 맞게 적절한 API를 선택하여 구현하면 된다.

컨테이너 기동

컨테이너 내의 애플리케이션은 기동 시에 환경 변수나 실행 인자를 읽어서 그에 맞게 동작하게 만들 수 있다.

헬스 체크(k8s)

준비 완료 프로브와 활성 프로브를 사용해 헬스 체크 기능을 사용할 수 있다.

컨테이너 종료

종료 요청 시그널 (SIGTERM)에 대한 종료 처리를 구현하는 것이 가능하다.

종료 처리에는 메모리의 값을 보존하거나 DB 세션을 종료한 뒤 정상 종료 하는 것을 의미한다.

서비스

컨테이너 위에 돌아가는 서버 애플리케이션은 특정 포트를 통해 클라이언트로부터의 요청을 받아들인다.

이를 위해 컨테이너의 포트를 호스트 IP 주소에 포트 포워딩을 하여 외부에서의 요청을 받아야한다.

k8s에서는 컨테이너를 담는 파드에 포트를 열어 클라이언트로부터의 요청을 받는다.

로그

MSA를 사용하고 규모가 커지면 많은 수의 컨테이너를 운용하게 되고 로그의 양도 비례해서 늘어나게 된다.

도커나 쿠버네티스는 로그를 일관되게 관리하여 컨테이너의 표준 출력과 표준 오류를 로그로 간직한다.

따라서 컨테이너의 애플리케이션은 로그를 파일에 쓰는 것이 아니라 표준 출력이나 표준 오류에 쓰면 된다.

후크(쿠버네티스 환경)

컨테이너가 기동하고 종료할 때 컨테이너 내에서 특정 처리를 실행시킬 수 있다.

컨테이너는 후크에 의해 실행될 스크립트, 혹은 HTTP 요청 처리를 구현해야 한다.

이때 Dockerfile의 ENTRYPOINT나 CMD로 지정한 명령어와 후크는 비동기적으로 실행되어 실행순서가 보장되지 않는다.

퍼시스턴트 볼륨

컨테이너에서 퍼시스턴트 볼륨을 사용하는 대표적인 경우는 설정 파일을 외부에서 주입하는 경우와 발생 데이터를 보존하는 경우 두 가지가 있다.

두 경우 다 호스트의 디렉터리를 컨테이너의 파일 시스템에 마운트하여 사용한다.

종료 상태

PID가 1인 프로세스의 Exit 코드가 컨테이너의 종료 코드로 설정된다.

쿠버네티스에서는 컨테이너가 종료 코드 0으로 종료하면 정상 종료, 그 외의 값이면 이상 종료로 판단한다.

Reference

k8s

15단계로 배우는 도커와 쿠버네티스 - 타카라 마호 저서





© 2022. by minkuk

Powered by minkuk