태스크 정보
앱(장기 실행 프로세스)과 달리 태스크는 일정 시간 동안 실행된 후 중단됩니다. 태스크는 상위 앱의 구성에 따라 자체 컨테이너에서 실행되며 제한된 리소스(예: CPU/메모리/이페머럴 디스크 스토리지)를 사용하도록 구성할 수 있습니다.
태스크 사용 사례
- 데이터베이스 마이그레이션
- 일괄 작업(예약됨/예약되지 않음) 실행
- 이메일 보내기
- 데이터 변환(ETL)
- 데이터 처리(업로드/백업/다운로드)
태스크 작동 방식
태스크는 비동기식으로 실행되며 상위 앱 또는 동일한 앱에서 실행되는 다른 태스크와 독립적으로 실행됩니다. 태스크를 실행하기 위해 만든 앱에는 생성되거나 할당된 경로가 없으며 실행 수명 주기를 건너뜁니다. 소스 코드 업로드 및 빌드 수명 주기는 계속 작동하며 앱을 푸시한 후 태스크를 실행하는 데 사용되는 컨테이너 이미지에 결과가 나타납니다(애플리케이션 배포 시 앱 수명 주기 참조).
태스크의 수명 주기는 다음과 같습니다.
kf push APP_NAME --task
명령어를 사용하여 태스크를 실행하기 위해 앱을 푸시합니다.kf run-task APP_NAME
명령어를 사용하여 앱에서 태스크를 실행합니다. 태스크는 앱에 결합된 환경 변수, 서비스 결합, 리소스 할당, 시작 명령어, 보안 그룹을 상속합니다.- Kf는 앱의 값과
run-task
명령어의 매개변수를 사용하여 Tekton PipelineRun을 만듭니다. - Tekton PipelineRun은 앱과 태스크의 구성을 기반으로 컨테이너를 시작하는 Kubernetes Pod를 만듭니다.
- 태스크 실행이 중지되고(태스크 종료 또는 수동 종료) 기본 Pod가 중지되거나 종료됩니다. 중지된 태스크의 Pod가 보존되므로
kf logs APP_NAME --task
명령어를 통해 태스크 로그에 액세스할 수 있습니다. - 태스크가 중지하기 전에 종료하면 Tekton PipelineRun이 취소되며(PipelineRun 취소 참조) 로그와 함께 기본 Pod가 삭제됩니다. 종료된 태스크의 로그는 구성된 경우 클러스터 수준 로깅 스트림으로 전달됩니다(예: Stackdriver, Fluentd).
- 앱에서 실행되는 태스크 수가 500개를 초과하면 오래된 태스크가 자동으로 삭제됩니다.
태스크 보관 정책
태스크는 Kubernetes 클러스터에서 커스텀 리소스로 생성되므로 기본 etcd
데이터베이스의 공간을 소진하지 않는 것이 중요합니다. 기본적으로 Kf는 각 앱마다 최신 500개의 태스크만 유지합니다. 태스크 수가 500개에 도달하면 가장 오래된 태스크(기본 Pod 및 로그 포함)가 자동으로 삭제됩니다.
태스크 로깅 및 실행 기록
STDOUT 또는 STDERR에 태스크가 출력하는 모든 데이터 또는 메시지는 kf logs APP_NAME --task
명령어를 사용하여 사용할 수 있습니다. 클러스터 수준 로깅 메커니즘(예: Stackdriver, Fluentd)은 구성된 로깅 대상에 태스크 로그를 제공합니다.