Menggunakan peristiwa Kubernetes untuk pemecahan masalah di Azure Kubernetes Service (AKS)

Artikel ini menunjukkan cara menggunakan peristiwa Kubernetes untuk memantau dan memecahkan masalah di kluster Azure Kubernetes Service (AKS).

Apa itu peristiwa Kubernetes?

Peristiwa adalah salah satu sumber yang paling menonjol untuk memantau dan memecahkan masalah di Kubernetes. Mereka menangkap dan merekam informasi tentang siklus hidup berbagai objek Kubernetes, seperti pod, simpul, layanan, dan penyebaran. Dengan memantau peristiwa, Anda dapat memperoleh visibilitas ke dalam aktivitas kluster Anda, mengidentifikasi masalah, dan memecahkan masalah secara efektif.

Peristiwa Kubernetes tidak bertahan di seluruh siklus hidup kluster Anda, karena tidak ada mekanisme retensi. Peristiwa hanya tersedia selama satu jam setelah peristiwa dibuat. Untuk menyimpan peristiwa untuk jangka waktu yang lebih lama, aktifkan Container Insights.

Objek peristiwa Kubernetes

Tabel berikut mencantumkan beberapa objek peristiwa Kubernetes utama:

Nama bidang Deskripsi
jenis Jenis didasarkan pada tingkat keparahan peristiwa:
Peristiwa peringatan menandakan situasi yang berpotensi bermasalah, seperti pod berulang kali gagal atau node kehabisan sumber daya. Mereka memerlukan perhatian, tetapi mungkin tidak mengakibatkan kegagalan langsung.
Kejadian normal mewakili operasi rutin, seperti pod yang dijadwalkan atau peningkatan skala penyebaran. Mereka biasanya menunjukkan perilaku kluster yang sehat.
alasan Alasan mengapa peristiwa tersebut dihasilkan. Misalnya, FailedScheduling atau CrashLoopBackoff.
message Pesan yang dapat dibaca manusia yang menjelaskan peristiwa tersebut.
namespace Namespace objek Kubernetes yang dikaitkan dengan peristiwa tersebut.
firstSeen Tanda waktu ketika peristiwa pertama kali diamati.
lastSeen Tanda waktu kapan peristiwa terakhir kali diamati.
PengendaliPelaporan Nama pengontrol yang melaporkan peristiwa. Contohnya, kubernetes.io/kubelet.
objek Nama objek Kubernetes yang dikaitkan dengan peristiwa tersebut.

Untuk informasi selengkapnya, lihat dokumentasi resmi Kubernetes.

Melihat peristiwa Kubernetes

Cantumkan kubectl get events semua peristiwa di kluster Anda menggunakan perintah .

Dengan asumsi kluster Anda sudah dibuat dan tersedia (sesuai dengan prasyarat dokumen), dapatkan kredensial (perhatikan bahwa flag --overwrite-existing disetel untuk menghindari kesalahan kubeconfig):

az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --overwrite-existing

Sekarang cantumkan semua peristiwa di kluster Anda:

kubectl get events

Hasil:

LAST SEEN   TYPE      REASON              OBJECT                      MESSAGE
xxm         Normal    Scheduled           pod/my-pod-xxxxx            Successfully assigned default/my-pod-xxxxx to aks-nodepoolxx-xxxxxxx-vmss000000
xxm         Normal    Pulled              pod/my-pod-xxxxx            Container image "nginx" already present on machine
xxm         Normal    Created             pod/my-pod-xxxxx            Created container nginx
xxm         Normal    Started             pod/my-pod-xxxxx            Started container nginx
...

Lihatlah peristiwa pod tertentu dengan terlebih dahulu menemukan nama pod dan kemudian menggunakan kubectl describe pod perintah .

Daftarkan pod dalam namespace saat ini.

kubectl get pods

Hasil:

NAME                             READY   STATUS    RESTARTS   AGE
my-pod-xxxxx                     1/1     Running   0          xxm
nginx-deployment-xxxxx           1/1     Running   0          xxm
...

Ganti <pod-name> di bawah ini dengan nama pod Anda yang sebenarnya. Untuk otomatisasi, berikut adalah contoh untuk pod pertama dalam daftar:

POD_NAME=$(kubectl get pods -o jsonpath="{.items[0].metadata.name}")
kubectl describe pod $POD_NAME

Praktik terbaik untuk memecahkan masalah dengan kejadian

Memfilter peristiwa untuk relevansi

Anda mungkin memiliki berbagai namespace dan layanan yang berjalan di kluster AKS Anda. Memfilter peristiwa berdasarkan jenis objek, namespace, atau alasan dapat membantu mempersempit hasil ke informasi yang paling relevan.

Misalnya, Anda dapat menggunakan perintah berikut untuk memfilter peristiwa dalam namespace default:

kubectl get events --namespace default

Mengotomatiskan pemberitahuan peristiwa

Untuk memastikan respons tepat waktu terhadap peristiwa penting di kluster AKS Anda, siapkan pemberitahuan otomatis. Azure menawarkan integrasi dengan layanan pemantauan dan pemberitahuan seperti Azure Monitor. Anda dapat mengonfigurasi pemberitahuan untuk dipicu berdasarkan pola peristiwa tertentu. Dengan cara ini, Anda segera diberi tahu tentang masalah penting yang memerlukan perhatian.

Meninjau peristiwa secara teratur

Biasakan meninjau peristiwa secara teratur di kluster AKS Anda. Pendekatan proaktif ini dapat membantu Anda mengidentifikasi tren, menangkap potensi masalah lebih awal, dan mencegah eskalasi. Dengan tetap berada di atas peristiwa, Anda dapat menjaga stabilitas dan performa aplikasi Anda.

Langkah selanjutnya

Setelah memahami peristiwa Kubernetes, Anda dapat melanjutkan perjalanan pemantauan dan pengamatan dengan mengaktifkan wawasan Kontainer.