Event Kubernetes mencatat perubahan kondisi di kluster Anda, seperti pembuatan, eksekusi, dan penghapusan Pod, atau error komponen. Pusat event K8s mengumpulkan semua event kluster Kubernetes secara real time serta menyediakan kemampuan penyimpanan, kueri, analisis, visualisasi, dan peringatan. Topik ini menjelaskan prosedur untuk membuat dan menggunakan pusat event K8s.
Informasi latar belakang
Arsitektur Kubernetes berbasis mesin kondisi. Saat sistem berpindah antar kondisi, ia menghasilkan event. Transisi antar kondisi normal menghasilkan event Normal, sedangkan transisi antara kondisi normal dan tidak normal 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 dipelihara oleh ACK dan komponennya, 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, gangguan akses jaringan publik, dan masalah deskriptor file—menjadi event node. Ketika dikombinasikan dengan kube-eventer, sistem ini memungkinkan alur peringatan tertutup untuk event node.
kube-eventer adalah alat open source yang dipelihara 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.
Prasyarat
Anda telah membuat kluster Kubernetes, seperti kluster ACK Alibaba Cloud atau kluster ACK Serverless.
Penagihan
Pusat event K8s gratis jika memenuhi kondisi berikut:
Periode retensi data untuk Logstore yang terkait dengan pusat event K8s adalah 90 hari (nilai default).
Volume data yang ditulis ke pusat event K8s kurang dari 256 MB per hari, yaitu sekitar 250.000 event.
Contoh:
Jika Anda menggunakan periode retensi data default 90 hari dan kluster Kubernetes Anda menghasilkan 1.000 event per hari, pusat event K8s tidak dikenai biaya.
Jika Anda mengatur periode retensi data menjadi 105 hari dan kluster Kubernetes Anda menghasilkan 1.000 event per hari, Anda akan dikenai biaya penyimpanan Logstore setelah 90 hari pertama. Item yang dapat ditagih adalah Log Storage. Untuk informasi lebih lanjut tentang item penagihan Log Storage, lihat Item yang dapat ditagih dalam mode bayar-per-fitur.
Langkah 1: Deploy kube-eventer dan node-problem-detector
ACK
Jika Anda menggunakan kluster ACK, Anda hanya perlu mendeploy komponen ack-node-problem-detector karena sudah mengintegrasikan fungsionalitas kube-eventer dan node-problem-detector. Jika Anda menggunakan kluster ACK Serverless, Anda harus mendeploy komponen kube-eventer.
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 kondisi, seperti eviction Pod atau kegagalan pull image. Kubernetes Event Center dari Simple Log Service (SLS) memusatkan semua event Kubernetes secara real time serta menyediakan penyimpanan, kueri, analisis, visualisasi, dan peringatan. Untuk mengintegrasikan event kluster Anda dengan Kubernetes Event Center, ikuti langkah-langkah berikut:
Jika Anda memilih Install node-problem-detector and Create Event Center saat pembuatan kluster, Anda dapat langsung melanjutkan ke Langkah 2 untuk melihat Kubernetes Event Center. 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. 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 yang dikelola sendiri
Deploy
kube-eventer.Instal kubectl. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
Buat file konfigurasi bernama eventer.yaml berdasarkan templat 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: # If TZ is assigned, set the TZ value as the time zone - 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 Simple Log Service.
logStore
string
Ya
Simple Log Service Logstore.
internal
string
Wajib untuk kluster Kubernetes yang dikelola sendiri.
Untuk kluster Kubernetes yang dikelola sendiri, Anda harus mengatur parameter ini ke false.
regionId
string
Wajib untuk kluster Kubernetes yang dikelola sendiri.
ID wilayah tempat 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 milik Pengguna Resource Access Management (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 milik Pengguna Resource Access Management (RAM). Untuk informasi lebih lanjut, lihat Pasangan Kunci Akses.
Jalankan perintah berikut untuk menerapkan konfigurasi
eventer.yamlke 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
Setelah Anda membuat instans pusat event K8s, Simple Log Service secara otomatis membuat Logstore bernama k8s-event dan dasbor terkait di proyek tujuan.
Masuk ke konsol Simple Log Service.
Di bagian Log Application, klik tab Intelligent O&M, lalu 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 untuk mengelola resource instans pusat event K8s, 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. Jika menggunakan metode ini, Simple Log Service secara otomatis membuat proyek bernama
k8s-log-{cluster-id}untuk mengelola resource instans pusat event K8s, seperti Logstore dan dasbor.
Langkah 3: Gunakan instans pusat event K8s
Setelah Anda membuat instans pusat event K8s dan mendeploy kube-eventer dan node-problem-detector, Anda dapat mulai menggunakan pusat event tersebut. Anda dapat melihat ikhtisar event, mengkueri detail event, melihat siklus hidup Pod, melihat event node, melihat event komponen inti, mengonfigurasi peringatan, menjalankan kueri kustom, serta memperbarui versi.
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 statistik ringkasan event inti. Statistik tersebut mencakup jumlah total event, perbandingan event error antara hari ini dan kemarin, statistik peringatan, tren event error, serta detail OOM pod. Catatan Informasi OOM pod tidak mengidentifikasi pod spesifik. Anda hanya dapat mengetahui node, nama proses, dan ID proses tempat event tersebut terjadi. Anda dapat menjalankan kueri kustom untuk menemukan event restart pod yang terjadi sekitar waktu OOM pod guna membantu mengidentifikasi pod spesifik tersebut. |
Kueri detail event | Halaman Event Detail Query menampilkan detail event yang difilter berdasarkan berbagai dimensi, seperti tipe event, objek event, host, namespace, dan nama. |
Lihat siklus hidup pod | Halaman Pod Lifecycle menampilkan garis waktu grafis dari event dalam siklus hidup pod. Anda juga dapat menyaring event pod penting berdasarkan tingkat event. |
Lihat event node | Halaman Node Events 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 dan mode URL yang tidak diimplementasikan. |
Atur peringatan | Di halaman Alert Configuration, Anda dapat mengonfigurasi peringatan untuk pusat event K8s. Untuk informasi lebih lanjut, lihat Atur peringatan. |
Jalankan kueri kustom | Di halaman Custom Query, Anda dapat menyesuaikan pernyataan kueri dan pernyataan analitik. Semua event di pusat event K8s disimpan dalam Logstore, sehingga Anda dapat menggunakan semua fitur Logstore, seperti kueri kustom, konsumsi event, laporan kustom, dan peringatan kustom. Untuk informasi lebih lanjut, lihat Panduan cepat untuk kueri dan analisis. Untuk mengakses proyek yang terkait dengan instans pusat event K8s, Anda dapat menemukan nama proyek dengan salah satu cara berikut:
|
Perbarui versi | Di halaman Version Update, Anda dapat meningkatkan pusat event K8s. |
Hapus instans pusat event K8s
Di halaman , temukan instans tersebut dan klik ikon
di kolom Actions.
Contoh log
Kode berikut menunjukkan contoh log.
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":""
}field log | Tipe | Deskripsi |
hostname | string | Hostname host tempat event terjadi. |
level | string | Tingkat log. Nilai yang valid: Normal dan Warning. |
pod_id | string | ID unik pod. Field ini hanya disertakan jika event terkait dengan pod. |
pod_name | string | Nama pod. Field ini hanya disertakan jika event terkait dengan pod. |
event_id | json | Detail event. Nilai field ini berupa string JSON. |
FAQ
Instans pusat event K8s tidak memiliki data
Setelah Anda mendeploy instans pusat event K8s, event baru akan dikumpulkan secara otomatis. Anda dapat mencarinya di halaman Custom Query. Kami menyarankan Anda mengatur rentang waktu di pojok kanan atas menjadi 1 Hari. Jika tidak ditemukan data, biasanya ada dua penyebab:
Tidak ada event baru yang dihasilkan di kluster Kubernetes sejak Anda mendeploy pusat event K8s.
Anda dapat menjalankan perintah
kubectl get events --all-namespacesuntuk memeriksa apakah ada event baru yang dihasilkan di kluster.Parameter dikonfigurasi secara salah dalam deployment
kube-eventerdannode-problem-detector.Jika Anda menggunakan kluster Container Service for Kubernetes (ACK), lakukan langkah-langkah berikut:
Masuk ke konsol ACK.
Di halaman Clusters, klik nama kluster target.
Di panel navigasi kiri, pilih .
Di halaman Helm, temukan ack-node-problem-detector dan klik Update.
Periksa dan modifikasi pengaturan 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 pengaturan parameternya.
Bagaimana cara melihat log kontainer untuk suatu event?
Jika Anda menggunakan kluster Container Service for Kubernetes (ACK), lakukan langkah-langkah berikut:
Masuk ke konsol ACK.
Di halaman Clusters, klik nama kluster target.
Di panel navigasi kiri, pilih .
Atur Namespace ke kube-system.
Di daftar Pods, temukan pod target dan klik Log.
Jika Anda menggunakan kluster Kubernetes yang dikelola sendiri, periksa log Pod dengan awalan nama file
eventer-slsdi namespace kube-system.