작업

태스크 정보

앱(장기 실행 프로세스)과 달리 태스크는 일정 시간 동안 실행된 후 중단됩니다. 태스크는 상위 앱의 구성에 따라 자체 컨테이너에서 실행되며 제한된 리소스(예: CPU/메모리/이페머럴 디스크 스토리지)를 사용하도록 구성할 수 있습니다.

태스크 사용 사례

  • 데이터베이스 마이그레이션
  • 일괄 작업(예약됨/예약되지 않음) 실행
  • 이메일 보내기
  • 데이터 변환(ETL)
  • 데이터 처리(업로드/백업/다운로드)

태스크 작동 방식

태스크는 비동기식으로 실행되며 상위 앱 또는 동일한 앱에서 실행되는 다른 태스크와 독립적으로 실행됩니다. 태스크를 실행하기 위해 만든 앱에는 생성되거나 할당된 경로가 없으며 실행 수명 주기를 건너뜁니다. 소스 코드 업로드빌드 수명 주기는 계속 작동하며 앱을 푸시한 후 태스크를 실행하는 데 사용되는 컨테이너 이미지에 결과가 나타납니다(애플리케이션 배포 시 앱 수명 주기 참조).

태스크의 수명 주기는 다음과 같습니다.

  1. kf push APP_NAME --task 명령어를 사용하여 태스크를 실행하기 위해 앱을 푸시합니다.
  2. kf run-task APP_NAME 명령어를 사용하여 앱에서 태스크를 실행합니다. 태스크는 앱에 결합된 환경 변수, 서비스 결합, 리소스 할당, 시작 명령어, 보안 그룹을 상속합니다.
  3. Kf는 앱의 값과 run-task 명령어의 매개변수를 사용하여 Tekton PipelineRun을 만듭니다.
  4. Tekton PipelineRun은 앱과 태스크의 구성을 기반으로 컨테이너를 시작하는 Kubernetes Pod를 만듭니다.
  5. 태스크 실행이 중지되고(태스크 종료 또는 수동 종료) 기본 Pod가 중지되거나 종료됩니다. 중지된 태스크의 Pod가 보존되므로 kf logs APP_NAME --task 명령어를 통해 태스크 로그에 액세스할 수 있습니다.
  6. 태스크가 중지하기 전에 종료하면 Tekton PipelineRun이 취소되며(PipelineRun 취소 참조) 로그와 함께 기본 Pod가 삭제됩니다. 종료된 태스크의 로그는 구성된 경우 클러스터 수준 로깅 스트림으로 전달됩니다(예: Stackdriver, Fluentd).
  7. 앱에서 실행되는 태스크 수가 500개를 초과하면 오래된 태스크가 자동으로 삭제됩니다.

태스크 보관 정책

태스크는 Kubernetes 클러스터에서 커스텀 리소스로 생성되므로 기본 etcd 데이터베이스의 공간을 소진하지 않는 것이 중요합니다. 기본적으로 Kf는 각 앱마다 최신 500개의 태스크만 유지합니다. 태스크 수가 500개에 도달하면 가장 오래된 태스크(기본 Pod 및 로그 포함)가 자동으로 삭제됩니다.

태스크 로깅 및 실행 기록

STDOUT 또는 STDERR에 태스크가 출력하는 모든 데이터 또는 메시지는 kf logs APP_NAME --task 명령어를 사용하여 사용할 수 있습니다. 클러스터 수준 로깅 메커니즘(예: Stackdriver, Fluentd)은 구성된 로깅 대상에 태스크 로그를 제공합니다.