Tentang Tasks
Berbeda dengan Aplikasi (proses yang berjalan lama), Tugas berjalan selama jangka waktu tertentu, lalu berhenti. Tugas berjalan di penampungnya sendiri berdasarkan konfigurasi di Aplikasi induk, dan dapat dikonfigurasi untuk menggunakan resource terbatas (misalnya, penyimpanan disk CPU/memori/ephemeral).
Kasus Penggunaan untuk Tugas
- Memigrasikan database
- Menjalankan tugas batch (terjadwal/tidak terjadwal)
- Mengirim email
- Mentransformasi data (ETL)
- Memproses data (upload/pencadangan/download)
Cara kerja Tasks
Tugas dieksekusi secara asinkron dan berjalan secara independen dari Aplikasi induk atau Tugas lain yang berjalan di Aplikasi yang sama. Aplikasi yang dibuat untuk menjalankan Tugas tidak memiliki rute yang dibuat atau ditetapkan, dan siklus proses Run dilewati. Siklus proses Upload kode sumber dan Build masih berlanjut dan menghasilkan image container yang digunakan untuk menjalankan Tugas setelah mendorong Aplikasi (lihat Siklus proses aplikasi di Men-deploy Aplikasi).
Siklus proses Tugas adalah sebagai berikut:
- Anda mendorong 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 pengaktifan, dan grup keamanan yang terikat ke Aplikasi. - Kf membuat PipelineRun Tekton dengan nilai dari Aplikasi dan parameter dari perintah
run-task
. - Tekton PipelineRun membuat Pod Kubernetes yang meluncurkan penampung berdasarkan konfigurasi di Aplikasi dan Tugas.
- Eksekusi tugas berhenti (Tugas keluar atau dihentikan secara manual), Pod yang mendasarinya dihentikan atau dihentikan. Pod Tugas yang dihentikan akan dipertahankan sehingga log Tugas dapat diakses melalui perintah
kf logs APP_NAME --task
. - Jika Anda menghentikan Tugas sebelum berhenti, Tekton PipelineRun akan dibatalkan (lihat Membatalkan PipelineRun), Pod yang mendasarinya beserta log akan dihapus. Log Tugas yang dihentikan dikirim ke aliran logging level cluster jika dikonfigurasi (misalnya, Stackdriver, Fluentd).
- Jika jumlah Tugas yang berjalan di Aplikasi lebih dari 500, Tugas terlama akan otomatis dihapus.
Kebijakan Retensi Tugas
Tugas dibuat sebagai resource kustom di cluster Kubernetes. Oleh karena itu, penting untuk tidak menghabiskan ruang database etcd
yang mendasarinya. Secara default, Kf hanya menyimpan 500 Tugas terbaru per setiap Aplikasi. Setelah jumlah Tugas mencapai 500, Tugas terlama (beserta Pod dan log yang mendasarinya) akan otomatis dihapus.
Logging Tugas dan Histori Eksekusi
Semua data atau pesan yang dihasilkan Tugas ke STDOUT atau STDERR tersedia dengan menggunakan perintah kf logs APP_NAME --task
. Mekanisme logging level cluster (seperti Stackdriver, Fluentd) akan mengirimkan log Tugas ke tujuan logging yang dikonfigurasi.