Pertahankan log pod alur kerja dengan Simple Log Service (SLS) agar dapat dikueri setelah pod dihapus.
Cara kerja
Saat Anda membuat kluster alur kerja, sistem secara otomatis membuat proyek SLS bernama k8s-log-<clusterid>. Semua log pod dikumpulkan ke dalam Logstore bernama workflow-logstore.
Setelah diaktifkan, Anda dapat melihat log melalui Argo CLI, Argo Server, atau Argo UI — baik pod tersebut masih berjalan maupun telah dihapus.
Batasan
-
Dibandingkan dengan
oss-artifact-repository, SLS menyediakan manajemen siklus hidup log otomatis dengan durasi retensi yang dapat dikonfigurasi serta kemampuan kueri yang andal. Untuk mengumpulkan log menggunakan SLS, hapus pengaturanarchiveLogs: true. -
Setelah pengumpulan log diaktifkan, Anda dapat melihat log alur kerja sebelum alur kerja tersebut dihapus, meskipun pod-nya telah dihapus.
-
Jika suatu alur kerja dipertahankan ke database, Anda dapat mengunduh log-nya sebagai file ZIP atau melihatnya di Konsol SLS bahkan setelah alur kerja dihapus. Lihat Pertahankan alur kerja.
Aktifkan SLS
Jika proyek k8s-log-<clusterid> tidak dibuat secara otomatis, buatlah secara manual. Lihat Buat proyek SLS.
Pilih salah satu metode berikut:
| Metode | Paling cocok untuk |
|---|---|
| Alibaba Cloud Argo CLI | Penyiapan cepat dengan satu perintah interaktif |
| AliyunLogConfig | Alur kerja GitOps atau manajemen konfigurasi deklaratif |
Aktifkan SLS dengan Alibaba Cloud Argo CLI
Alibaba Cloud Argo CLI memperluas Argo CLI open-source dengan dukungan pengumpulan log untuk pod yang telah dihapus.
Prasyarat
-
Alibaba Cloud Argo CLI versi 3.4.12 telah terinstal.
-
Jika Anda menggunakan Pengguna RAM, kebijakan AliyunLogReadOnlyAccess akan diterapkan pada Pengguna RAM tersebut. Lihat Buat Pengguna RAM dan otorisasikan Pengguna RAM untuk mengakses SLS.
Langkah-langkah
Konfigurasikan SLS. Saat diminta, masukkan jumlah hari retensi log (default: 7).
argo config sls
Please input log retention days. Default is 7 days.
10
Output yang diharapkan:
Start to config SLS for your cluster.
Created AliyunLogConfig CR workflow-sls-config in default namespace.
Created SLS logstore workflow-logstore in SLS project k8s-log-<clusterid>, log retention days is 10 days
Output tersebut mengonfirmasi bahwa SLS telah dikonfigurasi. Semua log alur kerja dikumpulkan ke Logstore workflow-logstore dalam proyek k8s-log-<clusterid>.
Aktifkan SLS dengan AliyunLogConfig
Terapkan YAML berikut untuk membuat resource kustom AliyunLogConfig. Kontroler SLS secara otomatis membuat proyek k8s-log-<clusterid> dan Logstore workflow-logstore.
cat << EOF | kubectl apply -f -
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: workflow-sls-config
namespace: default
spec:
lifeCycle: 5 # Periode retensi log dalam hari
logstore: workflow-logstore
logtailConfig:
configName: workflow-sls-config
inputType: plugin # Gunakan metode input berbasis plugin
inputDetail:
plugin:
inputs:
- type: service_docker_stdout # Kumpulkan stdout dan stderr kontainer
detail:
Stdout: true
Stderr: true
EOF
Verifikasi pengumpulan log
Setelah mengaktifkan SLS, pastikan bahwa log sedang dikumpulkan:
-
Masuk ke Konsol SLS.
-
Temukan proyek
k8s-log-<clusterid>. -
Klik workflow-logstore dan periksa apakah entri log muncul.
Jika tidak ada log yang muncul, periksa apakah resource kustom AliyunLogConfig telah dibuat:
kubectl get aliyunlogconfigs -n default
Output harus mencantumkan workflow-sls-config tanpa status error. Jika tidak muncul atau mengalami error, ulangi langkah pengaktifan atau verifikasi izin Pengguna RAM.
Akses log dengan Argo CLI
Argo CLI menyediakan dua cara untuk melihat log alur kerja. Metode langsung (flag --sls) direkomendasikan karena tidak memerlukan Argo Server.
Anda dapat menjalankan kubectl logs <pod-name> untuk melihat log pod yang masih ada, tetapi perintah ini secara default hanya menampilkan hingga 2.000 baris. Untuk melihat lebih banyak log atau log pod yang telah dihapus, gunakan salah satu metode berikut.
Gunakan Argo CLI secara langsung (direkomendasikan)
Prasyarat
-
Alibaba Cloud Argo CLI versi 3.4.12 telah terinstal.
-
Jika Anda menggunakan Pengguna RAM, kebijakan AliyunLogReadOnlyAccess harus telah dilampirkan pada Pengguna RAM tersebut.
Langkah-langkah
-
Berikan akses Argo CLI ke kluster Anda:
argo config init # Ikuti prompt untuk memasukkan ID AccessKey dan Rahasia AccessKey Anda. -
Kueri log:
# Lihat log untuk pod tertentu argo logs <workflow-name> <pod-name> --sls # Unduh semua log untuk suatu alur kerja sebagai file ZIP argo logs <workflow-name> --sls
Gunakan Argo Server
Untuk mengakses SLS melalui Argo Server, atur variabel lingkungan berikut.
Untuk mengkueri log SLS melalui Argo Server, Anda harus menentukan<pod-name>. Untuk mengakses namespace yang berbeda, perolehKUBE_TOKENuntuk namespace tersebut.
-
Atur variabel lingkungan yang diperlukan:
export ARGO_SERVER=argo.<cluster id>.<region>.alicontainer.com:2746 export KUBE_TOKEN=$(kubectl create token default -n default --duration 24h) export ARGO_TOKEN="Bearer $KUBE_TOKEN" export ARGO_INSECURE_SKIP_VERIFY=true -
Kueri log untuk pod tertentu:
argo logs <workflow-name> <pod-name>
Lihat log untuk alur kerja yang dipertahankan ke database
Jika suatu alur kerja dipertahankan ke database, Anda dapat mengunduh log-nya setelah alur kerja tersebut dihapus.
-
Berikan akses Argo CLI ke kluster Anda:
argo config init # Ikuti prompt untuk memasukkan ID AccessKey dan Rahasia AccessKey Anda. -
Dapatkan UID alur kerja yang diarsipkan:
argo archive listOutput yang diharapkan:
NAMESPACE NAME STATUS AGE DURATION PRIORITY MESSAGE P/R/C PARAMETERS UID default hello-world-l6c2r Succeeded 3d 1m 0 0/0/0 179eaef0-fde3-496f-946d-549e8f****** -
Unduh log alur kerja menggunakan UID:
argo archive logs 179eaef0-fde3-496f-946d-549e8f******Log disimpan sebagai
<workflow-name>.zipdi direktori saat ini.
Lihat log di Argo UI
Argo UI menampilkan log pod alur kerja secara langsung. Jika suatu pod dihapus, log SLS akan ditampilkan menggantikan output pod langsung.
Nonaktifkan SLS
-
Hapus resource kustom
AliyunLogConfig:kubectl delete aliyunlogconfigs.log.alibabacloud.com workflow-sls-config -n default -
Masuk ke Konsol SLS dan hapus Logstore
workflow-logstore.
Langkah selanjutnya
-
Pertahankan alur kerja — Simpan status alur kerja di database untuk mempertahankan log dan hasil setelah dihapus.
-
Alibaba Cloud Argo CLI — Unduh dan konfigurasikan CLI untuk akses log lengkap.