Event Kubernetes menunjukkan perubahan status kluster, seperti pembuatan, menjalankan, atau penghapusan Pod, serta pengecualian komponen. Pusat Event K8s mengumpulkan semua event kluster Kubernetes secara real time dan menyediakan kemampuan penyimpanan, kueri, analisis, visualisasi, serta peringatan.
Informasi latar belakang
Arsitektur Kubernetes didasarkan pada mesin keadaan (state machine). Saat sistem berpindah antar keadaan, event dihasilkan. Transisi antar keadaan normal menghasilkan event Normal, sedangkan transisi antara keadaan normal dan abnormal menghasilkan event Warning.
ACK (Container Service for Kubernetes) menyediakan solusi pemantauan event siap pakai untuk lingkungan terkontainerisasi. Solusi ini menggunakan node-problem-detector (NPD) yang dikelola oleh ACK dan komponen bawaannya, kube-eventer, untuk menyediakan pemantauan event.
-
node-problem-detector (NPD) adalah alat untuk mendiagnosis node Kubernetes. Alat ini mengonversi anomali node—seperti hang Docker Engine, hang kernel Linux, pengecualian akses jaringan publik, dan masalah deskriptor file—menjadi event node. Ketika dikombinasikan dengan kube-eventer, sistem ini memungkinkan loop tertutup untuk peringatan event node. Untuk informasi lebih lanjut, lihat NPD.
-
kube-eventer adalah alat open source yang dikelola oleh ACK untuk mengarsipkan event Kubernetes. Alat ini dapat mendorong event kluster ke sistem eksternal seperti DingTalk, Simple Log Service (SLS), dan EventBridge. Alat ini juga menyediakan kemampuan penyaringan berdasarkan tingkat event, sehingga memungkinkan pengumpulan real time, peringatan terarah, dan pengarsipan asinkron event. Untuk informasi lebih lanjut, lihat kube-eventer.
Prasyarat
Kluster Kubernetes telah dibuat, misalnya kluster Container Service for Kubernetes (ACK) atau kluster ACK Serverless.
Penagihan
Pusat Event K8s gratis jika kedua kondisi berikut terpenuhi:
-
Logstore terkait menggunakan periode retensi data default selama 90 hari.
-
Volume data harian kurang dari 256 MB (sekitar 250.000 event).
Contoh:
-
Dengan retensi 90 hari dan 1.000 event per hari, Pusat Event K8s gratis.
-
Dengan retensi 105 hari dan 1.000 event per hari, biaya penyimpanan berlaku setelah periode gratis 90 hari. Item yang dapat ditagih adalah Storage Space - Log Storage. Item yang dapat ditagih dalam model penagihan pay-by-feature.
Langkah 1: Deploy kube-eventer dan node-problem-detector
Kubernetes Alibaba Cloud
Untuk kluster ACK, komponen ack-node-problem-detector mengintegrasikan kube-eventer dan Node Problem Detector (NPD). Deploy hanya komponen ini seperti dijelaskan dalam Pemantauan event. Untuk kluster ACK Serverless, deploy komponen kube-eventer secara terpisah.
NPD menggunakan konfigurasi dan plug-in pihak ketiga untuk mendeteksi masalah node dan menghasilkan event kluster yang sesuai. Kluster Kubernetes juga menghasilkan event sendiri selama transisi keadaan, seperti eviction Pod atau kegagalan pull image. Pusat Event Kubernetes dari Simple Log Service (SLS) mengonsentrasikan semua event Kubernetes secara real time dan menyediakan penyimpanan, kueri, analisis, visualisasi, serta peringatan. Untuk mengintegrasikan event kluster Anda dengan Pusat Event Kubernetes, ikuti langkah-langkah berikut:
-
Jika Anda memilih Install node-problem-detector and Create Event Center saat pembuatan kluster, Anda dapat langsung menuju Langkah 2 untuk melihat Pusat Event Kubernetes. Untuk informasi tentang cara menginstal komponen NPD saat pembuatan kluster, lihat Buat kluster ACK yang dikelola.
-
Jika Anda tidak memilih Install node-problem-detector and Create Event Center saat pembuatan kluster, ikuti langkah-langkah berikut untuk menginstalnya secara manual.
Masuk ke Konsol ACK atau . Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih .
-
Di tab Logs and Monitoring, temukan dan instal ack-node-problem-detector.
Kluster Kubernetes lainnya
-
Deploy kube-eventer.
-
Instal kubectl dengan mengikuti panduan di Dapatkan file kubeconfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.
-
Buat file konfigurasi bernama eventer.yaml menggunakan contoh 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 ditentukan, 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
Wajib
Deskripsi
endpoint
string
Ya
Titik akhir SLS. Endpoints.
Project
string
Ya
Proyek SLS.
Logstore
string
Ya
Penyimpanan log SLS.
internal
string
Parameter ini wajib untuk kluster Kubernetes yang dikelola sendiri.
Atur ke false untuk kluster Kubernetes yang dikelola sendiri.
region ID
string
Parameter ini wajib untuk kluster Kubernetes yang dikelola sendiri.
ID wilayah Proyek SLS. Endpoints.
AccessKey ID
string
Parameter ini wajib untuk kluster Kubernetes yang dikelola sendiri.
ID AccessKey. Kami menyarankan Anda menggunakan pasangan Kunci Akses Pengguna RAM. Pasangan Kunci Akses.
AccessKey Secret
string
Parameter ini wajib untuk kluster Kubernetes yang dikelola sendiri.
Rahasia AccessKey. Kami menyarankan Anda menggunakan pasangan Kunci Akses Pengguna RAM. Pasangan Kunci Akses.
-
Jalankan perintah berikut untuk menerapkan konfigurasi dalam eventer.yaml ke kluster:
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
-
-
Deploy Node Problem Detector.
Langkah 2: Buat instans Pusat Event K8s
Membuat instans Pusat Event K8s secara otomatis membuat Logstore bernama k8s-event dan dasbor terkait di Proyek target.
-
Masuk ke Konsol Simple Log Service.
-
Di bagian Log Application, pada tab Intelligent O&M, 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, pilih Proyek yang sudah ada dari daftar drop-down Project. Proyek ini digunakan untuk mengelola sumber daya Pusat Event K8s, seperti Logstore dan dasbor.
-
Jika Anda memilih Select Kubernetes Cluster from Container Service for Kubernetes, pilih kluster yang sudah ada dari daftar drop-down K8s Cluster. Simple Log Service kemudian akan membuat Proyek bernama
k8s-log-{cluster-id}untuk mengelola sumber daya Pusat Event K8s, seperti Logstore dan dasbor.
-
Langkah 3: Gunakan instans Pusat Event K8s
Setelah membuat instans Pusat Event K8s dan melakukan deploy kube-eventer serta NPD, Anda dapat mengakses fitur-fitur berikut.
Di halaman K8s Event Center, temukan instans Pusat Event K8s target dan klik ikon
untuk melakukan operasi berikut.

|
Aksi |
Deskripsi |
|
Lihat ikhtisar event |
Halaman Event Overview menampilkan total event, perbandingan error harian, statistik peringatan, tren error, dan detail OOM Pod. Catatan
Event OOM Pod mengidentifikasi node, nama proses, dan ID proses, tetapi tidak mengidentifikasi Pod spesifik. Jalankan kueri kustom untuk menemukan event restart Pod di sekitar waktu OOM guna mengidentifikasi Pod tersebut. |
|
Kueri detail event |
Halaman Event Detail Query menampilkan event yang disaring berdasarkan tipe, objek, host, namespace, dan nama. |
|
Lihat siklus hidup Pod |
Halaman Pod Lifecycle memvisualisasikan event sepanjang siklus hidup Pod, dengan penyaringan berdasarkan tingkat event. |
|
Lihat event node |
Halaman Node Events menampilkan event siklus hidup node dan daftar event. |
|
Lihat event komponen inti |
Halaman Core Component Events menampilkan event komponen inti seperti kegagalan restart ECS atau pola URL yang tidak diimplementasikan. |
|
Konfigurasi peringatan |
Halaman Alert Configuration memungkinkan Anda menyiapkan peringatan untuk Pusat Event K8s. Konfigurasi peringatan. |
|
Jalankan kueri kustom |
Halaman Custom Query memungkinkan Anda menjalankan pernyataan kueri dan analisis kustom. Semua event disimpan dalam Logstore, memberi Anda akses ke kueri kustom, konsumsi event, laporan kustom, dan peringatan kustom. Memulai cepat pencarian dan analisis. Anda dapat menemukan nama Proyek dengan cara berikut:
|
|
Pembaruan versi |
Halaman Version Update memungkinkan Anda meningkatkan Pusat Event K8s. |
Hapus instans Pusat Event K8s
Di halaman , temukan instans target, lalu di kolom Actions, klik ikon
.
Contoh log
Entri log contoh:
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 |
Hostname tempat event terjadi. |
|
level |
string |
Tingkat log. Nilai yang valid: Normal dan Warning. |
|
pod_id |
string |
ID Pod. Hanya disertakan untuk event yang terkait Pod. |
|
pod_name |
string |
Nama Pod. Hanya disertakan untuk event yang terkait Pod. |
|
event_id |
json |
Detail event dalam format JSON. |
FAQ
Tidak ada data di Pusat Event K8s
Setelah deployment, event baru dikumpulkan secara otomatis. Cari event tersebut di halaman Custom Query dengan rentang waktu diatur ke 1 hari. Jika tidak ada data yang muncul, periksa hal berikut:
-
Tidak ada event baru yang dihasilkan sejak deployment.
Anda dapat menjalankan perintah
kubectl get events --all-namespacesuntuk memeriksa event baru di kluster. -
Parameter kube-eventer atau node-problem-detector salah.
-
Jika Anda menggunakan kluster ACK, lakukan langkah-langkah berikut:
-
Masuk ke Konsol ACK.
-
Di halaman Clusters, klik nama kluster target Anda.
-
Di panel navigasi kiri, pilih .
-
Di halaman Helm, klik Update untuk Update.
-
Periksa dan modifikasi parameter seperti dijelaskan dalam Langkah 1: Deploy kube-eventer dan node-problem-detector.
-
-
Untuk kluster Kubernetes yang dikelola sendiri, ikuti panduan Kumpulkan event Kubernetes untuk konfigurasi parameter.
-
Lihat log kontainer untuk suatu event
-
Jika Anda menggunakan kluster ACK, lakukan langkah-langkah berikut:
-
Masuk ke Konsol ACK.
-
Di halaman Clusters, klik nama kluster target Anda.
-
Di panel navigasi kiri, pilih .
-
Pilih Namespace dari daftar drop-down Namespace.
-
Di halaman Pods, klik Log pada baris Pod target.
-
-
Untuk kluster Kubernetes yang dikelola sendiri, periksa log Pod dengan awalan
eventer-slsdi namespace kube-system.