Tentang Tasks
Berbeda dengan Aplikasi (proses yang berjalan lama), Tasks berjalan untuk jangka waktu yang terbatas dan kemudian berhenti. Tugas berjalan di container-nya sendiri berdasarkan konfigurasi pada Aplikasi induk, dan dapat dikonfigurasi untuk menggunakan resource terbatas (misalnya penyimpanan CPU/memori/ephermeral disk).
Kasus Penggunaan untuk Tasks
- Memigrasikan database
- Menjalankan tugas batch (dijadwalkan/tidak terjadwal)
- Mengirim email
- Mentransformasi data (ETL)
- Memproses data (upload/pencadangan/download)
Cara kerja Tasks
Tugas dijalankan secara asinkron dan berjalan secara independen dari Aplikasi induk atau Tasks lain yang berjalan di Aplikasi yang sama. Aplikasi yang dibuat untuk menjalankan Tasks tidak memiliki rute yang dibuat atau ditetapkan, dan siklus proses Run dilewati. Siklus proses Upload kode sumber dan Build masih berlangsung dan menghasilkan image container yang digunakan untuk menjalankan Tasks setelah mengirim Aplikasi (lihat Siklus proses aplikasi di bagian Men-deploy Aplikasi).
Siklus proses Tugas adalah sebagai berikut:
- Anda mengirim Aplikasi untuk menjalankan tugas dengan perintah
kf push APP_NAME --task
. - Anda menjalankan Tugas di Aplikasi dengan perintah
kf run-task APP_NAME
. Tugas mewarisi variabel lingkungan, binding layanan, alokasi resource, perintah start-up, dan grup keamanan yang terikat ke Aplikasi. - Kf membuat Tekton PipelineRun dengan nilai dari Aplikasi dan parameter dari perintah
run-task
. - Tekton PipelineRun membuat Pod Kubernetes yang meluncurkan container berdasarkan konfigurasi pada Aplikasi dan Tugas.
- Eksekusi tugas berhenti (Tugas keluar atau dihentikan secara manual), Pod yang mendasarinya akan dihentikan atau dihentikan. Pod Tasks yang dihentikan akan dipertahankan sehingga log Tugas dapat diakses melalui perintah
kf logs APP_NAME --task
. - Jika Anda menghentikan Tugas sebelum dihentikan, Tekton PipelineRun akan dibatalkan (lihat Membatalkan PipelineRun), Pod yang mendasarinya beserta log akan dihapus. Log Tugas yang dihentikan akan dikirimkan ke aliran logging tingkat cluster jika dikonfigurasi (misalnya, Stackdriver, Fluentd).
- Jika jumlah Tasks yang berjalan di Aplikasi lebih dari 500, Tasks yang paling lama akan otomatis dihapus.
Kebijakan Retensi Tasks
Tugas dibuat sebagai resource kustom di cluster Kubernetes sehingga penting untuk tidak menghabiskan ruang database etcd
yang mendasarinya. Secara default, Kf hanya menyimpan 500 Tasks terbaru per setiap Aplikasi. Setelah jumlah Tasks mencapai 500, Tasks yang paling lama (beserta Pod dan log dasarnya) akan otomatis dihapus.
Logging Tugas dan Histori Eksekusi
Semua data atau pesan yang dihasilkan Task ke STDOUT atau STDERR tersedia menggunakan perintah kf logs APP_NAME --task
. Mekanisme logging tingkat cluster (seperti Stackdriver, Fluentd) akan mengirimkan log Tugas ke tujuan logging yang dikonfigurasi.