Ringkasan tugas

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:

  1. Anda mengirim Aplikasi untuk menjalankan tugas dengan perintah kf push APP_NAME --task.
  2. 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.
  3. Kf membuat Tekton PipelineRun dengan nilai dari Aplikasi dan parameter dari perintah run-task.
  4. Tekton PipelineRun membuat Pod Kubernetes yang meluncurkan container berdasarkan konfigurasi pada Aplikasi dan Tugas.
  5. 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.
  6. 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).
  7. 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.