Diagram kemudi ini dirancang untuk menerapkan fungsionalitas yang secara otomatis menyimpan core dumps dari sebagian besar penyedia layanan cloud kubernetes publik dan instance kubernetes privat ke layanan penyimpanan yang kompatibel dengan S3.
Silakan baca CONTRIBUTING.md ada beberapa catatan penting. Berikan perhatian khusus pada pedoman gaya pengkodean dan Surat Keterangan Asal Pengembang
Kami sebagai anggota, kontributor, dan pemimpin berjanji untuk membuat partisipasi dalam komunitas kami menjadi pengalaman bebas pelecehan bagi semua orang, tanpa memandang usia, ukuran tubuh, disabilitas yang terlihat atau tidak terlihat, etnis, karakteristik jenis kelamin, identitas dan ekspresi gender, tingkat pengalaman, pendidikan , status sosial ekonomi, kebangsaan, penampilan pribadi, ras, agama, atau identitas dan orientasi seksual.
Kami berjanji untuk bertindak dan berinteraksi dengan cara yang berkontribusi terhadap komunitas yang terbuka, ramah, beragam, inklusif, dan sehat.
Kode etik lengkap tersedia di sini
Silakan lihat grafik README.md untuk rincian selengkapnya.
Ini adalah matriks target pengujian yang dikonfirmasi. Silakan PR lingkungan yang juga diketahui berfungsi
Penyedia | Produk | Versi | Divalidasi? | Bekerja? |
AWS | EK | 1.21 | Ya | Ya |
AWS | ROSA | 4.8 | Ya | Ya |
Pembuatan Kustom | K8S | T/A | Ya | Ya |
Samudera Digital | K8S | 1.21.5-lakukan.0 | Ya | Ya |
GKE-cos_containerd | 1.20.10-gke.1600 | Ya | Ya | |
GKE-Ubuntu | 1.20.10-gke.1600 | Ya | Ya | |
IBM | IKS | 1.19-1.21 | Ya | Ya |
IBM | Korea Selatan | 4.6-4.8 | Ya | Ya |
Microsoft | AKS | 1.19 | Ya | Ya |
Microsoft | ARO | 4.8 | Ya | Ya |
topi merah | Lokal | 4.8 | Ya | Ya |
Core Dumps adalah bagian penting dari kemampuan observasi.
Ketika sistem menjadi lebih terdistribusi, core dump menawarkan pendekatan non-invasif kepada tim untuk memahami mengapa program tidak berfungsi di lingkungan mana pun tempat mereka diterapkan.
Core Dumps berguna dalam banyak skenario namun sangat relevan dalam kasus berikut:
Proses keluar tanpa jejak tumpukan yang berguna
Prosesnya kehabisan memori
Aplikasi tidak berperilaku seperti yang diharapkan
Masalah tradisional dengan core dumps adalah:
Overhead pengelolaan dump
Analisis Dump memerlukan perkakas khusus yang tidak tersedia di mesin pengembang.
Mengelola Akses ke dump karena dapat berisi informasi sensitif.
Bagan ini bertujuan untuk mengatasi masalah seputar pembuangan inti dengan memanfaatkan platform umum (K8, ROKS, dan Object Storage) di lingkungan cloud untuk mengatasi beban berat.
Bagan ini menyebarkan dua proses:
Agen mengelola pembaruan konfigurasi /proc/sys/kernel/*
, menyebarkan layanan komposer dan mengunggah file zip dump inti yang dibuat oleh komposer ke instance penyimpanan objek.
Komposer menangani pemrosesan core dump dan pembuatan dokumen runtime, coredump container, dan gambar JSON dari CRICTL dan memasukkannya ke dalam satu file zip. File zip disimpan di sistem file lokal node untuk diunggah oleh agen.
Saat Anda menginstal bagan IBM Cloud Core Dump Handler Helm, sumber daya Kubernetes berikut disebarkan ke dalam klaster Kubernetes Anda:
Namespace : Namespace khusus dibuat untuk menginstal komponen - defaultnya adalah ibm-observe
Handler Daemonset : Daemonset menyebarkan pod pada setiap node pekerja di cluster Anda. Daemonset berisi konfigurasi untuk mengaktifkan proses yang ditinggikan guna menentukan pola inti untuk menempatkan dump inti ke dalam penyimpanan objek serta mengumpulkan informasi pod jika tersedia.
Kebijakan Istimewa : Daemonset mengonfigurasi node host sehingga diperlukan hak istimewa.
Akun Layanan : Akun Layanan Standar untuk menjalankan daemonset
Klaim Volume : Untuk menyalin komposer ke host dan mengaktifkan akses ke dump inti yang dihasilkan
Peran Cluster : Dibuat dengan sumber daya acara dan membuat kata kerja dan dikaitkan dengan akun layanan.
Untuk menginstal bagan Helm di klaster Anda, Anda harus memiliki peran platform Administrator .
Bagan ini menerapkan daemonset kubernetes yang memiliki hak istimewa dengan implikasi berikut:
pembuatan otomatis container istimewa per node kubernetes yang mampu membaca file inti yang menanyakan info pod kepada crictl.
Daemonset menggunakan fitur hostpath yang berinteraksi dengan OS Linux yang mendasarinya.
Biner komposer dikerahkan dan dijalankan di server host
Core dump dapat berisi data runtime yang sensitif dan akses bucket penyimpanan harus dikelola sebagaimana mestinya.
Kunci penyimpanan objek disimpan sebagai rahasia dan digunakan sebagai variabel lingkungan di daemonset
IBM Cloud Core Dump Handler memerlukan sumber daya berikut pada setiap node pekerja agar dapat berjalan dengan sukses:
$ helm delete core-dump-handler --namespace observe
host-name
dihapus sebelum melanjutkan $ kubectl get pvc -n observe
$ helm install core-dump-handler . --namespace observe
helm delete core-dump-handler -n observe
Bangun gambar docker build -t YOUR_TAG_NAME .
Dorong gambar ke registri kontainer Anda
Perbarui kontainer di file values.yaml
untuk menggunakannya.
image :
registry : YOUR_REGISTRY
repository : YOUR_REPOSITORY
tag : YOUR_TAG
atau jalankan perintah helm install dengan pengaturan
--set image.registry=YOUR_REGISTRY
--set image.repository=YOUR_REPOSITORY
--set image.tag=YOUR_TAG
Layanan ini ditulis dalam Rust menggunakan Rustup.
Tes unit lokal dapat dijalankan menggunakan cargo test
di folder dasar
Saat ini hanya IBM Cloud ROKS dan IKS yang didukung namun kami dengan senang hati melakukan pengujian integrasi untuk layanan lain namun kami tidak dapat menjalankannya sebelum rilis.
Untuk menjalankan pengujian integrasi, ikuti petunjuk untuk build kustom
Di root folder proyek buat file bernama .env
dengan konfigurasi berikut
S3_ACCESS_KEY=XXXX
S3_SECRET=XXXX
S3_BUCKET_NAME=XXXX
S3_REGION=XXXX
Ubah direktori ke folder integrasi dan jalankan pengujian
cd integration
./run-ibm.sh
Rilis dibangun pada cabang pra-rilis, misalnya pengujian integrasi pre-8.5.0
dijalankan secara manual dan rilis dihasilkan ketika digabungkan ke main.
Saat ini tidak mungkin untuk mengotomatisasi hal ini karena integrasi kubernetes dalam tindakan github tidak cukup dapat diandalkan.
Jika Anda ingin menguji pra-rilis dengan pengujian integrasi Anda sendiri, harap ajukan masalah dan kami dapat berkolaborasi dalam pengujian yang Anda jalankan.
Tempat pertama untuk mencari masalah adalah di konsol agen. Instalasi yang berhasil akan terlihat seperti ini
[2021-09-08T22:28:43Z INFO core_dump_agent] Setting host location to: /var/mnt/core-dump-handler
[2021-09-08T22:28:43Z INFO core_dump_agent] Current Directory for setup is /app
[2021-09-08T22:28:43Z INFO core_dump_agent] Copying the composer from ./vendor/default/cdc to /var/mnt/core-dump-handler/cdc
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pattern /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pipe_limit /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for fs.suid_dumpable /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pattern=|/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pattern = |/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pipe_limit = 128
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pipe_limit=128
fs.suid_dumpable = 2
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of fs.suid_dumpable=2
[2021-09-08T22:28:43Z INFO core_dump_agent] Creating /var/mnt/core-dump-handler/.env file with LOG_LEVEL=info
[2021-09-08T22:28:43Z INFO core_dump_agent] Executing Agent with location : /var/mnt/core-dump-handler/core
[2021-09-08T22:28:43Z INFO core_dump_agent] Dir Content []
Jika agen berhasil berjalan maka mungkin ada masalah dengan konfigurasi komposer. Untuk memeriksa log komposer, buka shell ke dalam agen dan cat composer.log untuk melihat apakah ada pesan kesalahan.
cat /var/mnt/core-dump-handler/composer.log
Jika tidak ada kesalahan maka Anda harus mengubah log default dari error
menjadi debug
di value.yaml dan menerapkan ulang grafik. Buat core dump lagi dan /var/mnt/core-dump-handler/composer.log
harus berisi detail spesifik pada setiap unggahan.