Event Kubernetes (K8s) mencatat perubahan status kluster, seperti pembuatan, eksekusi, dan penghapusan Pod serta pengecualian komponen. K8s Event Center mengumpulkan semua event dari kluster Kubernetes Anda secara real time serta menyediakan kemampuan penyimpanan, kueri, analisis, visualisasi, dan peringatan. Topik ini menjelaskan cara membuat dan menggunakan K8s Event Center.
Latar Belakang
Prasyarat
Kluster Kubernetes, seperti kluster ACK atau kluster ACK Serverless, telah dibuat.
Penagihan
K8s Event Center gratis jika memenuhi kondisi berikut:
-
Periode retensi data untuk Logstore yang terkait dengan K8s Event Center adalah 90 hari (nilai default).
-
Volume data yang ditulis ke K8s Event Center kurang dari 256 MB per hari (sekitar 250.000 event).
Contoh:
-
Jika Anda menggunakan periode retensi default 90 hari dan kluster K8s Anda menghasilkan 1.000 event per hari, penggunaan K8s Event Center Anda gratis.
-
Jika Anda mengubah periode retensi menjadi 105 hari dan kluster K8s Anda menghasilkan 1.000 event per hari, Anda akan dikenai biaya penyimpanan Logstore setelah periode 90 hari pertama. Item yang dapat ditagih adalah Storage Space - Log Storage. Untuk informasi lebih lanjut tentang item yang dapat ditagih ini, lihat Item yang dapat ditagih pada 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 telah mengintegrasikan fungsionalitas eventer dan node-problem-detector. Anda hanya perlu mendeploy komponen ini. Untuk informasi lebih lanjut, lihat Pemantauan event. Untuk kluster ACK Serverless, Anda harus mendeploy komponen kube-eventer.
Kubernetes Lainnya
-
Deploy kube-eventer.
-
Instal tool kubectl. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig dan hubungkan ke kluster menggunakan kubectl.
-
Buat file bernama eventer.yaml dengan konten 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 Simple Log Service. Untuk informasi lebih lanjut, lihat Endpoints.
project
string
Ya
Proyek di Simple Log Service.
logStore
string
Ya
Logstore di Simple Log Service. Perhatikan bahwa parameter ini bernama
logStoredalam file YAML.internal
string
Wajib untuk kluster Kubernetes yang dikelola sendiri.
Menentukan apakah akan menggunakan titik akhir internal. Atur parameter ini ke false untuk kluster Kubernetes yang dikelola sendiri.
regionId
string
Wajib untuk kluster Kubernetes yang dikelola sendiri.
ID wilayah tempat proyek Simple Log Service berada. Untuk informasi lebih lanjut, lihat Endpoints.
accessKeyId
string
Wajib untuk kluster Kubernetes yang dikelola sendiri.
ID AccessKey. Kami menyarankan Anda menggunakan pasangan Kunci Akses Pengguna RAM. Untuk informasi lebih lanjut, lihat Pasangan Kunci Akses.
accessKeySecret
string
Wajib untuk kluster Kubernetes yang dikelola sendiri.
Rahasia AccessKey. Kami menyarankan Anda menggunakan pasangan Kunci Akses Pengguna RAM. Untuk informasi lebih lanjut, lihat 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.
Untuk informasi lebih lanjut, lihat node-problem-detector di GitHub.
Langkah 2: Buat instans K8s Event Center
Setelah Anda membuat K8s Event Center, Simple Log Service secara otomatis membuat Logstore bernama k8s-event di proyek target, beserta dasbor terkait.
-
Masuk ke Konsol Simple Log Service.
-
Pada bagian Log Application, di tab Intelligent O&M, klik K8s Event Center.
-
Di halaman Event Center Management, klik Add di pojok kanan atas.
-
Pada panel Create Event Center, konfigurasikan parameter lalu klik Next.
-
Jika Anda memilih Select Existing Project, pilih proyek yang sudah ada dari daftar drop-down Project untuk mengelola sumber daya K8s Event Center, seperti Logstore dan dasbor.
-
Jika Anda memilih Select Kubernetes Cluster from Container Service for Kubernetes, pilih kluster K8s yang sudah ada dari daftar drop-down K8s Cluster. Dengan metode ini, Simple Log Service secara default membuat proyek bernama
k8s-log-{cluster-id}untuk mengelola sumber daya K8s Event Center.
-
Langkah 3: Gunakan instans K8s Event Center
Setelah Anda membuat K8s Event Center dan mendeploy komponen eventer serta NPD, Anda dapat melihat statistik event, melakukan kueri detail event, melihat siklus hidup Pod, melihat event node, melihat event komponen inti, mengonfigurasi peringatan, menjalankan kueri kustom, dan memperbarui versi di K8s Event Center.
Di halaman K8s Event Center, temukan instans K8s Event Center target dan klik ikon
untuk melakukan operasi berikut.

|
Aksi |
Deskripsi |
|
Lihat ikhtisar event |
Halaman Event Overview menampilkan statistik ringkasan untuk event inti, seperti jumlah total event, perbandingan event error hari ini dengan kemarin, statistik peringatan, tren event error, dan detail OOM Pod. Catatan
Saat ini, informasi OOM Pod tidak dapat diidentifikasi hingga ke Pod tertentu. Informasi tersebut hanya dapat mengidentifikasi node, nama proses, dan ID proses tempat event terjadi. Anda dapat menggunakan kueri kustom untuk menemukan event restart Pod sekitar waktu kejadian OOM guna mengidentifikasi Pod spesifik tersebut. |
|
Lakukan kueri detail event |
Halaman Event Details menampilkan informasi detail untuk event yang difilter berdasarkan berbagai dimensi, seperti tipe event, objek event, host, Namespace, dan nama. |
|
Lihat siklus hidup Pod |
Halaman Pod Lifecycle menampilkan informasi event secara grafis sepanjang seluruh siklus hidup Pod. Anda juga dapat memfilter event Pod penting berdasarkan tingkat event. |
|
Lihat event node |
Halaman Node Event menampilkan detail event node, seperti siklus hidup node dan daftar event. |
|
Lihat event komponen inti |
Halaman Core Component Events menampilkan detail event komponen inti, seperti kegagalan restart ECS atau mode URL tidak diimplementasikan. |
|
Konfigurasi peringatan |
Halaman Alert Configuration memungkinkan Anda mengatur alert untuk Pusat Insiden K8s Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi alert. |
|
Kueri Kustom |
Halaman Custom Query memungkinkan Anda menulis dan mengeksekusi pernyataan kueri dan analisis Anda sendiri. Semua event di K8s Event Center disimpan dalam Logstore. Anda dapat menggunakan semua fitur Logstore, seperti kueri kustom, konsumsi event, laporan kustom, dan peringatan kustom. Untuk informasi lebih lanjut, lihat Memulai pencarian dan analisis. Untuk mengakses proyek yang berisi K8s Event Center, Anda dapat menemukan nama proyek dengan salah satu cara berikut:
|
|
Perbarui versi |
Halaman Version Update memungkinkan Anda meningkatkan versi K8s Event Center Anda. |
Hapus instans K8s Event Center
Di halaman , temukan instans yang ingin dihapus dan klik ikon
di kolom Actions.
Sampel log
Berikut ini adalah contoh log 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 |
Hostname tempat event terjadi. |
|
level |
string |
Tingkat event. Nilai yang valid: Normal dan Warning. |
|
pod_id |
string |
ID unik Pod. Bidang ini hanya ada jika event terkait dengan Pod. |
|
pod_name |
string |
Nama Pod. Bidang ini hanya ada jika event terkait dengan Pod. |
|
event_id |
json |
Konten detail event. Nilai bidang ini adalah string JSON. |
FAQ
Tidak ada data di K8s Event Center
Setelah Anda mendeploy K8s Event Center, event yang baru dihasilkan akan dikumpulkan secara otomatis. Anda dapat mencarinya di halaman Custom Query. Kami menyarankan mengatur rentang waktu di pojok kanan atas menjadi 1 Hari. Jika tidak ada data yang muncul, periksa kemungkinan penyebab berikut:
-
Tidak ada event baru yang dihasilkan di kluster K8s sejak Anda mendeploy K8s Event Center.
Anda dapat menjalankan perintah
kubectl get events --all-namespacesuntuk memeriksa event baru di kluster. -
Parameter dikonfigurasi secara salah saat Anda mendeploy komponen eventer dan node-problem-detector.
-
Jika Anda menggunakan kluster ACK, ikuti langkah-langkah berikut:
-
Masuk ke Konsol ACK.
-
Di halaman Clusters, klik kluster target.
-
Di panel navigasi kiri, pilih .
-
Di halaman Helm, temukan ack-node-problem-detector dan klik Update.
-
Periksa dan modifikasi konfigurasi parameter. Untuk informasi lebih lanjut, lihat Langkah 1: Deploy kube-eventer dan node-problem-detector.
-
-
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, lihat Kumpulkan event Kubernetes untuk konfigurasi parameter.
-
Lihat log kontainer event
-
Jika Anda menggunakan kluster ACK, ikuti langkah-langkah berikut:
-
Masuk ke Konsol ACK.
-
Di halaman Clusters, klik kluster target.
-
Di panel navigasi kiri, pilih .
-
Atur Namespace ke kube-system.
-
Di daftar Pods, temukan Pod target dan klik Logs.
-
-
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, lihat log Pod dengan awalan
eventer-slsdi Namespace kube-system.