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.
Histori eksekusi dan logging tugas
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.
Menjadwalkan Tugas
Seperti yang dijelaskan di atas, Tugas dapat dijalankan secara asinkron menggunakan perintah kf run-task APP_NAME
.
Atau, Anda dapat menjadwalkan Tugas untuk dieksekusi dengan membuat Tugas terlebih dahulu menggunakan perintah kf create-job
, lalu menjadwalkannya dengan perintah kf schedule-job JOB_NAME
. Anda dapat menjadwalkan Tugas tersebut untuk otomatis menjalankan Tugas sesuai jadwal unix-cron yang ditentukan.
Cara menjadwalkan Tasks
Buat dan jadwalkan Tugas untuk menjalankan Tugas. Tugas menjelaskan Tugas yang akan dieksekusi dan secara otomatis mengelola pembuatan Tugas.
Tugas dibuat sesuai jadwal meskipun eksekusi Tugas sebelumnya masih berjalan. Jika ada eksekusi yang terlewat karena alasan apa pun, hanya eksekusi terbaru yang terlewat yang akan dieksekusi saat sistem pulih.
Menghapus Tugas akan menghapus semua Tugas terkait. Jika Tugas terkait masih sedang berlangsung, tugas tersebut akan dihapus secara paksa tanpa dijalankan hingga selesai.
Tugas yang dibuat oleh Tugas terjadwal masih tunduk pada Kebijakan retensi tugas.
Perbedaan dengan PCF Scheduler
PCF Scheduler memungkinkan beberapa jadwal untuk satu Tugas, sedangkan Kf hanya mendukung satu jadwal per Tugas. Anda dapat mereplikasi perilaku PCF Scheduler dengan membuat beberapa Tugas, satu untuk setiap jadwal.