Insiden mencatat perubahan status kluster Kubernetes. Sebagai contoh, sebuah insiden dapat mencatat perubahan status ketika Anda membuat, menjalankan, atau menghapus pod, atau ketika terjadi pengecualian komponen. K8s Event Center mengumpulkan semua insiden dalam kluster Kubernetes secara real-time. Ini memungkinkan Anda melakukan berbagai operasi pada insiden tersebut, seperti menyimpan, menanyalkan, menganalisis, memvisualisasikan data insiden, serta mengonfigurasi peringatan. Topik ini menjelaskan cara membuat dan menggunakan pusat insiden di K8s Event Center.
Kubernetes dirancang berdasarkan mesin keadaan. Insiden dihasilkan karena transisi antar keadaan yang berbeda. Biasanya, insiden Normal dihasilkan ketika mesin keadaan berubah ke keadaan yang diharapkan, sedangkan insiden Peringatan dihasilkan ketika mesin keadaan berubah ke keadaan yang tidak diharapkan.
ACK menyediakan solusi pemantauan insiden siap pakai untuk skenario kontainerisasi. ACK menggunakan NPD dan kube-eventer yang disediakan oleh NPD untuk memantau insiden kontainer.
NPD adalah alat untuk mendiagnosis node Kubernetes. NPD mendeteksi pengecualian node, menghasilkan insiden node, dan bekerja sama dengan kube-eventer untuk memunculkan peringatan atas insiden-insiden tersebut serta memungkinkan manajemen peringatan loop tertutup. NPD menghasilkan insiden node ketika pengecualian berikut terdeteksi: Docker engine macet, kernel Linux macet, pengecualian lalu lintas arah keluar, dan pengecualian deskriptor file. Untuk informasi lebih lanjut, lihat NPD.
kube-eventer adalah emitor insiden sumber terbuka yang dikelola oleh ACK. kube-eventer mengirim insiden Kubernetes ke sink seperti DingTalk, Layanan Log Sederhana, dan EventBridge. kube-eventer juga menyediakan kondisi filter untuk menyaring insiden tingkat berbeda. Anda dapat menggunakan kube-eventer untuk mengumpulkan insiden secara real-time, memicu peringatan atas insiden tertentu, dan mengarsipkan insiden secara asinkron. Untuk informasi lebih lanjut, lihat kube-eventer.
NPD adalah alat untuk mendiagnosis node Kubernetes. Alat ini mendeteksi pengecualian node, menghasilkan insiden node, dan bekerja sama dengan kube-eventer untuk memunculkan peringatan atas insiden-insiden tersebut, sehingga memungkinkan manajemen peringatan loop tertutup. NPD menghasilkan insiden node ketika mendeteksi pengecualian berikut: Docker engine macet, kernel Linux macet, pengecualian lalu lintas arah keluar, dan pengecualian deskriptor file. Untuk informasi lebih lanjut, lihat NPD.
kube-eventer adalah emitor insiden sumber terbuka yang dikelola oleh ACK. Alat ini mengirim insiden Kubernetes ke sink seperti DingTalk, Layanan Log Sederhana, dan EventBridge. kube-eventer juga menyediakan kondisi filter untuk menyaring insiden berdasarkan tingkat tertentu. Anda dapat menggunakan kube-eventer untuk mengumpulkan insiden secara real-time, memicu peringatan atas insiden tertentu, serta mengarsipkan insiden secara asinkron. Untuk informasi lebih lanjut, lihat kube-eventer.
Prasyarat
Kluster Kubernetes telah dibuat, seperti kluster Container Service for Kubernetes (ACK) atau kluster ACK Serverless.
Penagihan
Jika kondisi berikut terpenuhi, Anda tidak akan dikenakan biaya saat menggunakan pusat insiden:
Periode retensi data dari penyimpanan log yang terkait dengan pusat insiden Anda adalah 90 hari, yang merupakan nilai default.
Jumlah data yang ditulis ke pusat insiden Anda setiap hari kurang dari 256 MB, yang setara dengan sekitar 250.000 insiden.
Contoh:
Jika periode retensi data default ditentukan untuk penyimpanan log yang terkait dan 1.000 insiden dihasilkan di kluster Kubernetes Anda setiap hari, Anda dapat menggunakan pusat insiden Anda secara gratis.
Jika Anda mengubah periode retensi data menjadi 105 hari dan 1.000 insiden dihasilkan di kluster Kubernetes Anda setiap hari, Anda akan dikenakan biaya untuk data yang disimpan di penyimpanan log terkait setelah data disimpan selama 90 hari. Biaya dihitung berdasarkan item tagihan ruang penyimpanan yang digunakan oleh data log. Untuk informasi lebih lanjut tentang item tagihan, lihat Item Tagihan Bayar-per-Fitur.
Langkah 1: Pasang komponen kube-eventer dan node-problem-detector
Kluster ACK
Jika Anda menggunakan kluster ACK, Anda hanya perlu memasang komponen ack-node-problem-detector karena komponen ini terintegrasi dengan fitur komponen kube-eventer dan node-problem-detector. Untuk informasi lebih lanjut, lihat Pemantauan Insiden. Jika Anda menggunakan kluster ACK Serverless, Anda harus memasang komponen kube-eventer.
NPD bekerja sama dengan plugin pihak ketiga untuk mendeteksi pengecualian node dan menghasilkan insiden kluster. Kluster Kubernetes juga menghasilkan insiden ketika status kluster berubah. Sebagai contoh, ketika pod diusir atau operasi pull image gagal, insiden terkait dihasilkan. Pusat insiden Kubernetes dari Layanan Log Sederhana mengumpulkan, menyimpan, dan memvisualisasikan insiden kluster. Ini memungkinkan Anda menanyalkan dan menganalisis insiden-insiden tersebut, serta mengonfigurasi peringatan. Anda dapat mengarahkan insiden kluster ke pusat insiden Kubernetes dari Layanan Log Sederhana menggunakan metode berikut.
Jika Anda telah memilih Install node-problem-detector and Create Event Center saat membuat kluster, lanjutkan ke Langkah 2 untuk melihat pusat insiden Kubernetes. Untuk informasi lebih lanjut tentang cara memasang komponen ack-node-problem-detector saat membuat kluster, lihat Buat Kluster ACK yang Dikelola.
Jika Anda tidak memilih Install node-problem-detector and Create Event Center saat membuat kluster, lakukan langkah-langkah berikut untuk memasangnya secara manual.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Di tab Logs and Monitoring, temukan dan pasang ack-node-problem-detector.
Kluster Kubernetes lainnya
Pasang komponen kube-eventer.
Pasang alat kubectl. Untuk informasi lebih lanjut, lihat Hubungkan ke Kluster ACK Menggunakan kubectl.
Buat file konfigurasi bernama eventer.yaml menggunakan kode sampel berikut:
apiVersion: apps/v1 kind: Deployment metadata: labels: name: kube-eventer name: kube-eventer namespace: kube-system spec: replicas: 1 selector: matchLabels: app: kube-eventer template: metadata: labels: app: kube-eventer annotations: scheduler.alpha.kubernetes.io/critical-pod: '' spec: dnsPolicy: ClusterFirstWithHostNet serviceAccount: kube-eventer containers: - image: registry.cn-hangzhou.aliyuncs.com/acs/kube-eventer:v1.2.5-cc7ec54-aliyun name: kube-eventer command: - "/kube-eventer" - "--source=kubernetes:https://kubernetes.default" ## .send to sls ## --sink=sls:https://{endpoint}?project={project}&logStore=k8s-event®ionId={region-id}&internal=false&accessKeyId={accessKeyId}&accessKeySecret={accessKeySecret} - --sink=sls:https://cn-beijing.log.aliyuncs.com?project=k8s-xxxx&logStore=k8s-event®ionId=cn-beijing&internal=false&accessKeyId=xxx&accessKeySecret=xxx env: # Jika TZ ditetapkan, atur nilai TZ sebagai zona waktu - name: TZ value: "Asia/Shanghai" volumeMounts: - name: localtime mountPath: /etc/localtime readOnly: true - name: zoneinfo mountPath: /usr/share/zoneinfo readOnly: true resources: requests: cpu: 10m memory: 50Mi limits: cpu: 500m memory: 250Mi volumes: - name: localtime hostPath: path: /etc/localtime - name: zoneinfo hostPath: path: /usr/share/zoneinfo --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kube-eventer rules: - apiGroups: - "" resources: - events verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kube-eventer roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: kube-eventer subjects: - kind: ServiceAccount name: kube-eventer namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: kube-eventer namespace: kube-systemParameter
Tipe
Diperlukan
Deskripsi
endpoint
string
Ya
Titik akhir Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Titik akhir.
project
string
Ya
Proyek Layanan Log Sederhana.
logStore
string
Ya
Penyimpanan log Layanan Log Sederhana.
internal
string
Ya untuk kluster Kubernetes yang dikelola sendiri
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, atur nilainya menjadi false.
regionId
string
Ya untuk kluster Kubernetes yang dikelola sendiri
ID wilayah tempat proyek Layanan Log Sederhana berada. Untuk informasi lebih lanjut, lihat Titik akhir.
accessKeyId
string
Ya untuk kluster Kubernetes yang dikelola sendiri
ID AccessKey. Kami merekomendasikan Anda menggunakan ID AccessKey dari pengguna Resource Access Management (RAM). Untuk informasi lebih lanjut, lihat Pasangan AccessKey.
accessKeySecret
string
Ya untuk kluster Kubernetes yang dikelola sendiri
Rahasia AccessKey. Kami merekomendasikan Anda menggunakan Rahasia AccessKey dari pengguna RAM. Untuk informasi lebih lanjut, lihat Pasangan AccessKey.
Jalankan perintah berikut untuk menerapkan file konfigurasi eventer.yaml ke kluster Anda:
kubectl apply -f eventer.yamlOutput yang diharapkan:
deployment.apps/kube-eventer created clusterrole.rbac.authorization.k8s.io/kube-eventer created clusterrolebinding.rbac.authorization.k8s.io/kube-eventer created serviceaccount/kube-eventer created
Pasang komponen node-problem-detector.
Untuk informasi lebih lanjut, kunjungi GitHub.
Langkah 2: Buat pusat insiden
Setelah Anda membuat pusat insiden, Layanan Log Sederhana secara otomatis membuat penyimpanan log bernama k8s-event di proyek yang ditentukan. Dashboard terkait juga dibuat untuk pusat insiden.
Masuk ke Konsol Layanan Log Sederhana.
Di bagian Log Application, klik tab Intelligent O&M. Kemudian, klik K8s Event Center.
Di halaman Event Center Management, klik Add di pojok kanan atas.
Di panel Create Event Center, konfigurasikan parameter dan klik Next.
Jika Anda memilih Select Existing Project, Anda dapat memilih proyek yang ada dari daftar drop-down Project untuk mengelola sumber daya pusat insiden Anda. Sumber daya termasuk penyimpanan log dan dashboard terkait.
Jika Anda memilih Select Kubernetes Cluster from Container Service for Kubernetes, Anda dapat memilih kluster Kubernetes yang ada dari daftar drop-down K8s Cluster. Jika Anda menggunakan metode ini untuk membuat pusat insiden, Layanan Log Sederhana secara otomatis membuat proyek dengan nama dalam format
k8s-log-{cluster-id}untuk mengelola sumber daya pusat insiden Anda. Sumber daya termasuk penyimpanan log dan dashboard terkait.
Langkah 3: Gunakan pusat insiden
Setelah Anda membuat pusat insiden di K8s Event Center dan memasang komponen kube-eventer dan node-problem-detector, Anda dapat menggunakan pusat insiden. Sebagai contoh, Anda dapat menggunakan pusat insiden untuk melihat statistik insiden, menanyalkan detail insiden, melihat siklus hidup pod, melihat insiden node, melihat insiden komponen inti, mengonfigurasi peringatan, melakukan operasi kueri kustom, dan memperbarui versi K8s Event Center.
Di panel navigasi kiri halaman K8s Event Center, temukan pusat insiden yang ingin Anda kelola dan klik ikon
. Kemudian, Anda dapat melakukan operasi berikut.

Operasi | Deskripsi |
Lihat statistik insiden | Tab Event Overview menampilkan statistik insiden inti. Statistik mencakup total jumlah insiden, perbedaan antara jumlah insiden kesalahan dalam hari saat ini dan hari sebelumnya, statistik peringatan, tren insiden kesalahan, dan detail insiden OOM pod. Catatan Jika insiden OOM pod dicatat, Anda hanya dapat melihat node tempat insiden terjadi, nama proses, dan ID proses. Pod tempat insiden terjadi tidak dapat diidentifikasi. Namun, Anda dapat menanyalkan insiden restart pod yang terjadi sekitar waktu insiden OOM pod. Dengan cara ini, Anda dapat mengidentifikasi pod. |
Tanyakan detail insiden | Tab Event Details menampilkan detail insiden yang dikembalikan menggunakan kondisi filter berbeda, seperti tipe insiden, tujuan insiden, host, namespace, dan nama. |
Lihat siklus hidup pod | Tab Pod Lifecycle menampilkan detail insiden yang terjadi dalam siklus hidup pod. Anda dapat menyaring insiden pod penting berdasarkan level insiden. |
Lihat insiden node | Tab Node Event menampilkan detail insiden node. Anda dapat melihat siklus hidup node dan insiden yang terjadi di node. |
Lihat insiden komponen inti | Tab Event Core menampilkan detail insiden komponen inti. Insiden mencakup NLC.Task.RestartECS.Fail dan NLC.Task.URL.Mode.Unimplemented. |
Konfigurasikan peringatan | Di halaman yang muncul setelah Anda klik Alert Configuration, Anda dapat mengonfigurasi peringatan untuk pusat insiden Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan peringatan. |
Lakukan operasi kueri kustom | Di halaman yang muncul setelah Anda klik Custom Query, Anda dapat menjalankan pernyataan kueri kustom. Semua insiden di pusat insiden disimpan dalam penyimpanan log. Anda dapat menggunakan semua fitur penyimpanan log. Sebagai contoh, Anda dapat menjalankan pernyataan kueri kustom, mengonsumsi data insiden, membuat laporan kustom, atau mengonfigurasi peringatan kustom. Untuk informasi lebih lanjut, lihat Panduan untuk penanyalan dan analisis log. Jika Anda ingin mengakses proyek yang ditentukan untuk pusat insiden, Anda dapat memperoleh nama proyek menggunakan salah satu metode berikut:
|
Perbarui versi K8s Event Center | Di halaman yang muncul setelah Anda klik Version Update, Anda dapat memperbarui versi K8s Event Center. |
Hapus pusat insiden
Di halaman , temukan pusat insiden yang ingin Anda hapus dan klik ikon
di kolom Actions.
Contoh log
Berikut adalah contoh log sampel yang dikumpulkan:
hostname: cn-hangzhou.i-***********
level: Normal
pod_id: 2a360760-****
pod_name: logtail-ds-blkkr
event_id: {
"metadata":{
"name":"logtail-ds-blkkr.157b7cc90de7e192",
"namespace":"kube-system",
"selfLink":"/api/v1/namespaces/kube-system/events/logtail-ds-blkkr.157b7cc90de7e192",
"uid":"2aaf75ab-****",
"resourceVersion":"6129169",
"creationTimestamp":"2019-01-20T07:08:19Z"
},
"involvedObject":{
"kind":"Pod",
"namespace":"kube-system",
"name":"logtail-ds-blkkr",
"uid":"2a360760-****",
"apiVersion":"v1",
"resourceVersion":"6129161",
"fieldPath":"spec.containers{logtail}"
},
"reason":"Started",
"message":"Started container",
"source":{
"component":"kubelet",
"host":"cn-hangzhou.i-***********"
},
"firstTimestamp":"2019-01-20T07:08:19Z",
"lastTimestamp":"2019-01-20T07:08:19Z",
"count":1,
"type":"Normal",
"eventTime":null,
"reportingComponent":"",
"reportingInstance":""
}Bidang | Tipe | Deskripsi |
hostname | String | Nama host server tempat insiden terjadi. |
level | String | Level log. Nilai valid: Normal dan Warning. |
pod_id | String | Pengenal unik pod. Bidang ini tersedia hanya jika tipe insiden terkait dengan pod. |
pod_name | String | Nama pod. Bidang ini tersedia hanya jika tipe insiden terkait dengan pod. |
event_id | JSON | Detail insiden. Nilai bidang ini adalah string JSON. |
FAQ
Mengapa tidak ada data di pusat insiden saya?
Setelah Anda memasang pusat insiden, insiden baru secara otomatis dikumpulkan ke pusat insiden. Anda dapat mengklik Custom Query untuk mencari insiden-insiden tersebut. Kami merekomendasikan Anda mengatur rentang waktu di pojok kanan atas menjadi 1 Hari. Data mungkin tidak ditemukan di pusat insiden karena alasan berikut:
Setelah Anda memasang pusat insiden, tidak ada insiden yang dihasilkan di kluster Kubernetes terkait.
Anda dapat menjalankan perintah
kubectl get events --all-namespacesuntuk memeriksa apakah insiden baru dihasilkan di kluster.Nilai tidak valid ditentukan untuk parameter yang digunakan untuk memasang komponen kube-eventer dan node-problem-detector.
Jika Anda menggunakan kluster ACK, lakukan langkah-langkah berikut:
Masuk ke Konsol ACK.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik nama kluster tersebut.
Di panel navigasi kiri, pilih .
Di halaman Helm, cari ack-node-problem-detector dan klik Update pada kolom Actions.
Periksa dan modifikasi pengaturan parameter. Untuk informasi lebih lanjut, lihat Langkah 1: Pasang Komponen kube-eventer dan node-problem-detector.
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, ikuti petunjuk yang diberikan di Kumpulkan Insiden Kubernetes.
Bagaimana cara melihat log kontainer tempat insiden terjadi?
Jika Anda menggunakan kluster ACK, lakukan langkah-langkah berikut:
Masuk ke Konsol ACK.
Di halaman Clusters, cari kluster yang ingin Anda kelola, lalu klik nama kluster tersebut.
Di panel navigasi kiri, pilih .
Atur parameter Namespace ke kube-system.
Di halaman Pods, temukan pod yang ingin Anda kelola dan klik Logs di kolom Tindakan.
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, temukan namespace kube-system dan file yang namanya diawali dengan eventer-sls untuk melihat log pod.