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.
Menjadwalkan Tugas
Seperti yang dijelaskan di atas, Tugas dapat dijalankan secara asinkron menggunakan perintah kf run-task APP_NAME
.
Atau, Anda dapat menjadwalkan Tasks untuk dijalankan 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 Tasks pada jadwal unix-cron yang ditentukan.
Cara Tugas dijadwalkan
Membuat dan menjadwalkan Tugas untuk menjalankan Tugas. Tugas menjelaskan Tugas untuk dijalankan dan 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 yang baru saja terlewatkan yang akan dijalankan saat sistem kembali pulih.
Menghapus Tugas akan menghapus semua Tugas terkait. Jika masih ada Tugas terkait, Tugas tersebut akan dihapus secara paksa tanpa dijalankan hingga selesai.
Tugas yang dibuat oleh Tugas terjadwal tetap tunduk pada kebijakan Retensi tugas.
Perbedaan dengan Penjadwal PCF
Penjadwal PCF memungkinkan beberapa jadwal untuk satu Tugas, sedangkan Kf hanya mendukung satu jadwal per Tugas. Anda dapat mereplikasi perilaku Penjadwal PCF dengan membuat beberapa Tugas, satu untuk setiap jadwal.