Topik ini menjelaskan prosedur diagnosis untuk node dan cara memecahkan masalah pengecualian node. Topik ini juga memberikan jawaban atas beberapa pertanyaan yang sering diajukan (FAQ) tentang node.
Daftar isi
Kategori | Konten |
Prosedur diagnosis | |
Metode pemecahan masalah umum | |
Masalah umum dan solusi |
|
Prosedur diagnosis
Periksa apakah sebuah node abnormal. Untuk informasi lebih lanjut, lihat bagian Periksa status node.
Jika sebuah node berada dalam keadaan NotReady, lakukan langkah-langkah berikut untuk memecahkan masalah:
Periksa apakah nilai dari kondisi node berikut adalah True: PIDPressure, DiskPressure, dan MemoryPressure. Jika salah satu kondisi node adalah True, pecahkan masalah berdasarkan kata kunci dari kondisi node tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian dockerd - RuntimeOffline, Sumber daya memori tidak mencukupi - MemoryPressure, atau Inodes tidak mencukupi - InodesPressure.
Periksa komponen utama dan log node.
kubelet
Periksa status, log, dan konfigurasi kubelet. Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada kubelet, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian kubelet.
dockerd
Periksa status, log, dan konfigurasi dockerd. Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada dockerd, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian dockerd - RuntimeOffline.
containerd
Periksa status, log, dan konfigurasi containerd. Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada containerd, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian containerd - RuntimeOffline.
NTP
Periksa status, log, dan konfigurasi layanan Network Time Protocol (NTP). Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada layanan NTP, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian NTP - NTPProblem.
Kumpulkan dan periksa log diagnostik node. Untuk informasi lebih lanjut, lihat bagian Kumpulkan log diagnostik node.
Periksa data pemantauan node, termasuk penggunaan CPU, memori, dan sumber daya jaringan. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node. Jika penggunaan sumber daya tidak normal, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Sumber daya CPU tidak mencukupi atau Sumber daya memori tidak mencukupi - MemoryPressure.
Jika node berada dalam keadaan Unknown, lakukan langkah-langkah berikut untuk memecahkan masalah:
Periksa apakah Instance Elastic Compute Service (ECS) yang menjadi host node berada dalam keadaan Running.
Periksa komponen utama node.
kubelet
Periksa status, log, dan konfigurasi kubelet. Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada kubelet, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian kubelet.
dockerd
Periksa status, log, dan konfigurasi dockerd. Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada dockerd, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian dockerd - RuntimeOffline.
containerd
Periksa status, log, dan konfigurasi containerd. Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada containerd, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian containerd - RuntimeOffline.
NTP
Periksa status, log, dan konfigurasi layanan NTP. Untuk informasi lebih lanjut, lihat bagian Periksa komponen utama node.
Jika terjadi pengecualian pada layanan NTP, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian NTP - NTPProblem.
Periksa konektivitas jaringan node. Untuk informasi lebih lanjut, lihat bagian Periksa grup keamanan node. Jika terjadi pengecualian jaringan, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Pengecualian jaringan.
Kumpulkan dan periksa log diagnostik node. Untuk informasi lebih lanjut, lihat bagian Kumpulkan log diagnostik node.
Periksa data pemantauan node, termasuk penggunaan CPU, memori, dan sumber daya jaringan. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node. Jika penggunaan sumber daya tidak normal, pecahkan masalah pengecualian tersebut. Untuk informasi lebih lanjut, lihat bagian Sumber daya CPU tidak mencukupi atau Sumber daya memori tidak mencukupi - MemoryPressure.
Jika masalah tetap ada setelah Anda melakukan operasi sebelumnya, gunakan fitur diagnosis yang disediakan oleh Container Service for Kubernetes (ACK) untuk memecahkan masalah tersebut. Untuk informasi lebih lanjut, lihat bagian Gunakan fitur diagnosis node.
Metode pemecahan masalah umum
Gunakan fitur diagnosis node
Jika terjadi pengecualian pada node, Anda dapat menggunakan fitur diagnosis yang disediakan oleh ACK untuk memecahkan pengecualian tersebut.
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster yang ingin diubah. Di panel navigasi di sebelah kiri, pilih .
Di halaman Nodes, temukan node target dan pilih di kolom Actions.
Di panel yang muncul, klik Create diagnosis, lalu lihat hasil diagnosis dan saran perbaikan yang sesuai di halaman konsol.
Periksa detail node
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster yang ingin diubah. Di panel navigasi di sebelah kiri, pilih .
Di halaman Nodes, temukan node yang ingin diperiksa dan klik nama node atau klik Details di kolom Actions.
Periksa status node
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster yang ingin diubah. Di panel navigasi di sebelah kiri, pilih .
Di halaman Nodes, lihat status setiap node.
Jika node berada dalam status Ready, maka node tersebut beroperasi dengan normal.
Jika sebuah node tidak berada dalam keadaan Ready, Anda dapat mengklik nama node atau klik Details di kolom Actions node untuk melihat detail node.
CatatanJika Anda ingin mengumpulkan informasi tentang kondisi node seperti InodesPressure, DockerOffline, dan RuntimeOffline, Anda harus menginstal node-problem-detector di kluster Anda dan membuat pusat event. Fitur pusat event secara otomatis diaktifkan saat Anda membuat kluster. Untuk informasi lebih lanjut, lihat Buat dan gunakan pusat event.
Periksa event node
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, klik nama kluster yang ingin diubah. Di panel navigasi di sebelah kiri, pilih .
Di halaman Nodes, temukan node target dan klik nama node atau klik Details di kolom Actions.
Di bagian bawah halaman detail node, Anda dapat melihat event yang terkait dengan node.
Kumpulkan log diagnostik node
Gunakan fitur diagnosis node yang disediakan oleh Container Intelligence Service di konsol untuk mengumpulkan log diagnostik. Untuk informasi lebih lanjut, lihat Diagnosis Node.
Gunakan skrip untuk mengumpulkan log diagnostik. Untuk informasi lebih lanjut, lihat bagian Bagaimana cara mengumpulkan informasi diagnostik kluster Kubernetes? dari topik "FAQ tentang manajemen kluster".
Periksa komponen utama node
kubelet:
Periksa status kubelet
Masuk ke node tempat kubelet berjalan dan jalankan perintah berikut untuk memeriksa status proses kubelet:
systemctl status kubeletOutput yang diharapkan:

Periksa log kubelet
Masuk ke node tempat kubelet berjalan dan jalankan perintah berikut untuk mencetak log kubelet: Untuk informasi lebih lanjut tentang cara memeriksa log kubelet, lihat bagian Kumpulkan log diagnostik node.
journalctl -u kubeletPeriksa konfigurasi kubelet
Masuk ke node tempat kubelet berjalan dan jalankan perintah berikut untuk memeriksa konfigurasi kubelet:
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Runtime:
Periksa dockerd
Periksa status dockerd
Masuk ke node tempat dockerd berjalan dan jalankan perintah berikut untuk memeriksa status proses dockerd:
systemctl status dockerOutput yang diharapkan:

Periksa log dockerd
Masuk ke node tempat dockerd berjalan dan jalankan perintah berikut untuk mencetak log dockerd: Untuk informasi lebih lanjut tentang cara memeriksa log dockerd, lihat bagian Kumpulkan log diagnostik node.
journalctl -u dockerPeriksa konfigurasi dockerd
Masuk ke node tempat dockerd berjalan dan jalankan perintah berikut untuk memeriksa konfigurasi dockerd:
cat /etc/docker/daemon.json
Periksa containerd
Periksa status containerd
Masuk ke node tempat containerd berjalan dan jalankan perintah berikut untuk memeriksa status proses containerd:
systemctl status containerdOutput yang diharapkan:

Periksa log containerd
Masuk ke node tempat containerd berjalan dan jalankan perintah berikut untuk mencetak log containerd: Untuk informasi lebih lanjut tentang cara memeriksa log containerd, lihat bagian Kumpulkan log diagnostik node.
journalctl -u containerd
NTP:
Periksa status layanan NTP
Masuk ke node tempat layanan NTP berjalan dan jalankan perintah berikut untuk memeriksa status proses chronyd:
systemctl status chronydOutput yang diharapkan:

Periksa log layanan NTP
Masuk ke node tempat layanan NTP berjalan dan jalankan perintah berikut untuk mencetak log layanan NTP:
journalctl -u chronyd
Periksa data pemantauan node
CloudMonitor
ACK terintegrasi dengan CloudMonitor. Anda dapat masuk ke Konsol CloudMonitor untuk melihat data pemantauan Instance ECS yang diterapkan di kluster ACK Anda. Untuk informasi lebih lanjut tentang cara memantau node, lihat Pantau node.
Managed Service for Prometheus
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sisi kiri, pilih .
Di halaman Prometheus Monitoring, klik tab Node Monitoring, lalu klik tab Nodes.
Pada tab Nodes, pilih node dari daftar drop-down untuk melihat data pemantauan, termasuk penggunaan sumber daya CPU, memori, dan disk.
Periksa grup keamanan node
Untuk informasi lebih lanjut, lihat Ikhtisar dan Konfigurasikan grup keamanan untuk kluster.
Pengecualian kubelet
Penyebab
Pengecualian kubelet biasanya disebabkan oleh masalah pada proses kubelet itu sendiri, runtime kontainer, atau konfigurasi kubelet yang tidak valid.
Masalah
Status kubelet adalah inactive.
Solusi
Jalankan perintah berikut untuk me-restart kubelet. Operasi restart tidak memengaruhi kontainer yang sedang berjalan.
systemctl restart kubeletSetelah kubelet direstart, masuk ke node tempat kubelet berjalan dan jalankan perintah berikut untuk memeriksa apakah status kubelet normal:
systemctl status kubeletJika status kubelet tidak normal, jalankan perintah berikut di node untuk mencetak log kubelet:
journalctl -u kubeletJika Anda menemukan pengecualian dalam log kubelet, pecahkan masalah berdasarkan kata kunci.
Jika konfigurasi kubelet tidak valid, jalankan perintah berikut untuk memodifikasi konfigurasi:
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf #Modifikasi konfigurasi kubelet. systemctl daemon-reload;systemctl restart kubelet #Muat ulang konfigurasi dan restart kubelet.
Pengecualian dockerd - RuntimeOffline
Penyebab
Dalam banyak kasus, pengecualian dockerd terjadi karena konfigurasi dockerd tidak valid, proses dockerd kelebihan beban, atau node kelebihan beban.
Masalah
Status dockerd adalah inactive.
Status dockerd adalah active (running) tetapi dockerd tidak berjalan sesuai harapan. Akibatnya, terjadi pengecualian pada node. Dalam kasus ini, Anda mungkin gagal menjalankan perintah
docker psataudocker exec.Nilai kondisi node RuntimeOffline adalah True.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika terjadi pengecualian pada node tempat dockerd berjalan. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Jalankan perintah berikut untuk me-restart dockerd:
systemctl restart dockerSetelah dockerd direstart, masuk ke node dan jalankan perintah berikut untuk memeriksa apakah status dockerd normal:
systemctl status dockerJika status dockerd tidak normal, jalankan perintah berikut di node untuk mencetak log dockerd:
journalctl -u docker
Pengecualian containerd - RuntimeOffline
Penyebab
Dalam banyak kasus, pengecualian containerd terjadi karena konfigurasi containerd tidak valid, proses containerd kelebihan beban, atau node kelebihan beban.
Status containerd adalah inactive.
Nilai kondisi node RuntimeOffline adalah True.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika terjadi pengecualian pada node tempat containerd berjalan. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Jalankan perintah berikut untuk me-restart containerd:
systemctl restart containerdSetelah containerd direstart, masuk ke node dan jalankan perintah berikut untuk memeriksa apakah status containerd normal:
systemctl status containerdJika status containerd tidak normal, jalankan perintah berikut di node untuk mencetak log containerd:
journalctl -u containerd
Pengecualian NTP - NTPProblem
Penyebab
Dalam banyak kasus, pengecualian NTP terjadi karena status proses NTP tidak normal.
Masalah
Status chronyd adalah inactive.
Nilai kondisi node NTPProblem adalah True.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika terjadi pengecualian pada node tempat layanan NTP berjalan. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Jalankan perintah berikut untuk me-restart chronyd:
systemctl restart chronydSetelah chronyd direstart, masuk ke node dan jalankan perintah berikut untuk memeriksa apakah status chronyd normal:
systemctl status chronydJika status chronyd tidak normal, jalankan perintah berikut di node untuk mencetak log chronyd:
journalctl -u chronyd
Pengecualian PLEG - PLEG tidak sehat
Penyebab
Pod Lifecycle Event Generator (PLEG) mencatat semua event yang terjadi selama siklus hidup pod, seperti event yang terkait dengan startup atau terminasi kontainer. Dalam banyak kasus, pengecualian PLEG tidak sehat terjadi karena runtime kontainer pada node tidak normal atau node menggunakan versi systemd yang lebih lama.
Masalah
Status node adalah NotReady.
Isi berikut ada dalam log kubelet:
I0729 11:20:59.245243 9575 kubelet.go:1823] skipping pod synchronization - PLEG is not healthy: pleg was last seen active 3m57.138893648s ago; threshold is 3m0s.Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika terjadi pengecualian PLEG. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Restart komponen utama berikut di node secara berurutan: dockerd/containerd dan kubelet. Lalu, periksa apakah status node normal.
Jika status node tidak normal setelah Anda me-restart komponen utama, restart node. Untuk informasi lebih lanjut, lihat Restart instance.
PeringatanOperasi restart juga akan me-restart pod di node. Lakukan dengan hati-hati.
Jika node abnormal menjalankan CentOS 7.6, pecahkan masalah pengecualian dengan merujuk pada Apa yang Harus Dilakukan jika Log kubelet Mengandung Kesalahan "Reason:KubeletNotReady Message:PLEG is not healthy:" Saat Menggunakan CentOS 7.6.
Sumber daya node tidak mencukupi untuk penjadwalan
Penyebab
Masalah ini biasanya terjadi ketika node di kluster memiliki sumber daya yang tidak mencukupi untuk memenuhi permintaan penjadwalan pod baru.
Masalah
Jika sumber daya yang disediakan oleh node di kluster Anda tidak mencukupi, penjadwalan pod gagal dan salah satu kesalahan berikut dikembalikan:
Sumber daya CPU tidak mencukupi: 0/2 nodes are available: 2 Insufficient cpu
Sumber daya memori tidak mencukupi: 0/2 nodes are available: 2 Insufficient memory
Sumber daya penyimpanan sementara tidak mencukupi: 0/2 nodes are available: 2 Insufficient ephemeral-storage
Penjadwal menentukan apakah sumber daya yang disediakan oleh node tidak mencukupi berdasarkan aturan berikut:
Sumber daya CPU tidak mencukupi: Permintaan CPU Pod > (CPU yang dapat dialokasikan oleh Node - CPU yang sudah dialokasikan oleh Node)
Sumber daya memori tidak mencukupi: Permintaan memori Pod > (Memori yang dapat dialokasikan oleh Node - Memori yang sudah dialokasikan oleh Node)
Penyimpanan sementara tidak mencukupi: Permintaan penyimpanan sementara Pod > (Penyimpanan sementara yang dapat dialokasikan oleh Node - Penyimpanan sementara yang sudah dialokasikan oleh Node)
Jika jumlah sumber daya yang diminta oleh pod lebih besar dari selisih antara total sumber daya yang dapat dialokasikan oleh node dan jumlah sumber daya yang sudah dialokasikan dari node, pod tidak akan dijadwalkan ke node tersebut.
Jalankan perintah berikut untuk menanyakan informasi tentang alokasi sumber daya pada node:
kubectl describe node [$nodeName]Output yang diharapkan:
Allocatable:
cpu: 3900m
ephemeral-storage: 114022843818
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 12601Mi
pods: 60
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 725m (18%) 6600m (169%)
memory 977Mi (7%) 16640Mi (132%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)Parameter:
Allocatable: jumlah CPU, memori, atau penyimpanan sementara yang dapat dialokasikan oleh node.
Allocated resources: jumlah CPU, memori, atau penyimpanan sementara yang sudah dialokasikan dari node.
Solusi
Jika sumber daya yang disediakan oleh node tidak mencukupi, Anda dapat menggunakan salah satu metode berikut untuk mengurangi beban node:
Hapus pod yang tidak lagi diperlukan. Untuk informasi lebih lanjut, lihat Kelola pod.
Modifikasi konfigurasi sumber daya untuk pod berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat bagian Ubah batas atas dan bawah sumber daya CPU dan memori untuk pod dari topik "Kelola pod".
Fitur profil sumber daya dapat memberikan rekomendasi spesifikasi sumber daya untuk kontainer berdasarkan data historis penggunaan sumber daya. Ini sangat menyederhanakan konfigurasi permintaan dan batas sumber daya untuk kontainer. Untuk informasi lebih lanjut, lihat Profil Sumber Daya.
Tambahkan node ke kluster. Untuk informasi lebih lanjut, lihat Buat dan kelola pool node.
Tingkatkan node di kluster. Untuk informasi lebih lanjut, lihat Tingkatkan atau turunkan spesifikasi node pekerja.
Untuk informasi lebih lanjut, lihat bagian Sumber daya CPU tidak mencukupi, Sumber daya memori tidak mencukupi - MemoryPressure, dan Ruang disk tidak mencukupi - DiskPressure.
Sumber daya CPU tidak mencukupi
Penyebab
Dalam banyak kasus, sumber daya CPU yang disediakan oleh node menjadi tidak mencukupi karena kontainer di node telah menggunakan sejumlah besar sumber daya CPU.
Masalah
Ketika sebuah node tidak memiliki sumber daya CPU yang cukup, status node mungkin menjadi tidak normal.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika penggunaan CPU node mencapai atau melebihi 85%. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Periksa kurva penggunaan CPU di tab Pemantauan Node konsol dan identifikasi waktu terjadinya lonjakan penggunaan CPU. Lalu, periksa apakah kebocoran memori terjadi pada proses yang berjalan di node. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node.
Untuk informasi lebih lanjut tentang cara mengurangi beban node, lihat bagian Sumber daya node tidak mencukupi untuk penjadwalan.
Restart node. Untuk informasi lebih lanjut, lihat Restart instance.
PeringatanOperasi restart juga akan me-restart pod di node. Lakukan dengan hati-hati.
Sumber daya memori tidak mencukupi - MemoryPressure
Penyebab
Dalam banyak kasus, sumber daya memori yang disediakan oleh node menjadi tidak mencukupi karena kontainer di node telah menggunakan sejumlah besar sumber daya memori.
Masalah
Jika jumlah memori yang tersedia di node turun di bawah ambang batas
memory.available, nilai kondisi node MemoryPressure berubah menjadi True. Kontainer diusir dari node. Untuk informasi lebih lanjut tentang pengusiran kontainer, lihat Node-pressure Eviction.Jika node tidak memiliki sumber daya memori yang cukup, masalah berikut terjadi:
Nilai kondisi node MemoryPressure berubah menjadi True.
Kontainer diusir dari node:
Anda dapat menemukan informasi The node was low on resource: memory dalam event kontainer yang diusir.
Anda dapat menemukan informasi attempting to reclaim memory dalam event node.
Kesalahan out of memory (OOM) mungkin terjadi. Ketika kesalahan OOM terjadi, Anda dapat menemukan informasi System OOM dalam event node.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika penggunaan memori node mencapai atau melebihi 85%. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Periksa kurva penggunaan memori di tab Pemantauan Node konsol dan identifikasi waktu terjadinya lonjakan penggunaan memori. Lalu, periksa apakah kebocoran memori terjadi pada proses yang berjalan di node. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node.
Untuk informasi lebih lanjut tentang cara mengurangi beban node, lihat bagian Sumber daya node tidak mencukupi untuk penjadwalan.
Restart node. Untuk informasi lebih lanjut, lihat Restart instance.
PeringatanOperasi restart juga akan me-restart pod di node. Lakukan dengan hati-hati.
Inodes tidak mencukupi - InodesPressure
Penyebab
Dalam banyak kasus, inodes yang disediakan oleh node menjadi tidak mencukupi karena kontainer di node telah menggunakan sejumlah besar inodes.
Masalah
Jika jumlah inodes yang tersedia di node turun di bawah ambang batas
inodesFree, nilai kondisi node InodesPressure berubah menjadi True. Kontainer diusir dari node. Untuk informasi lebih lanjut tentang pengusiran kontainer, lihat Node-pressure Eviction.Jika inodes yang disediakan oleh node menjadi tidak mencukupi, masalah berikut terjadi:
Nilai kondisi node InodesPressure berubah menjadi True.
Kontainer diusir dari node:
Anda dapat menemukan informasi The node was low on resource: inodes dalam event kontainer yang diusir.
Anda dapat menemukan informasi attempting to reclaim inodes dalam event node.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika node tidak memiliki inodes yang cukup. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Periksa kurva penggunaan inode di tab Pemantauan Node konsol dan identifikasi waktu terjadinya lonjakan penggunaan inode. Lalu, periksa apakah proses yang berjalan di node telah menggunakan sejumlah besar inodes. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node.
Untuk informasi lebih lanjut tentang cara memecahkan masalah lainnya, lihat Selesaikan masalah ruang disk tidak mencukupi pada instance Linux.
PID tidak mencukupi - NodePIDPressure
Penyebab
Dalam banyak kasus, ID proses (PID) yang disediakan oleh node menjadi tidak mencukupi karena kontainer di node telah menggunakan sejumlah besar PID.
Masalah
Jika jumlah PID yang tersedia di node turun di bawah ambang batas
pid.available, nilai kondisi node NodePIDPressure berubah menjadi True. Kontainer diusir dari node. Untuk informasi lebih lanjut tentang pengusiran kontainer, lihat Node-pressure Eviction.Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika node tidak memiliki PID yang cukup. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Jalankan perintah berikut untuk menanyakan jumlah maksimum PID dan nilai PID terbesar di node.
sysctl kernel.pid_max #Menanyakan jumlah maksimum PID. ps -eLf|awk '{print $2}' | sort -rn| head -n 1 #Menanyakan nilai PID terbesar.Jalankan perintah berikut untuk menanyakan lima proses teratas yang menggunakan jumlah PID paling banyak:
ps -elT | awk '{print $4}' | sort | uniq -c | sort -k1 -g | tail -5Output yang diharapkan:
#Kolom pertama menampilkan jumlah PID yang digunakan oleh proses. Kolom kedua menampilkan ID proses. 73 9743 75 9316 76 2812 77 5726 93 5691Anda dapat menggunakan ID proses untuk menemukan proses dan pod yang sesuai, mendiagnosis masalah, dan mengoptimalkan kode.
Kurangi beban node. Untuk informasi lebih lanjut, lihat bagian Sumber daya node tidak mencukupi untuk penjadwalan.
Restart node. Untuk informasi lebih lanjut, lihat Restart instance.
PeringatanOperasi restart juga akan me-restart pod di node. Lakukan dengan hati-hati.
Ruang disk tidak mencukupi - DiskPressure
Penyebab
Dalam banyak kasus, ruang disk yang disediakan oleh node menjadi tidak mencukupi karena kontainer di node telah menggunakan sejumlah besar ruang disk atau ukuran gambar kontainer terlalu besar.
Masalah
Jika jumlah ruang disk yang tersedia di node turun di bawah ambang batas
imagefs.available, nilai kondisi node DiskPressure berubah menjadi True.Jika jumlah ruang disk yang tersedia turun di bawah ambang batas
nodefs.available, semua kontainer di node diusir. Untuk informasi lebih lanjut tentang pengusiran kontainer, lihat Node-pressure Eviction.Jika ruang disk node menjadi tidak mencukupi, masalah berikut terjadi:
Nilai kondisi node DiskPressure berubah menjadi True.
Jika jumlah ruang disk yang tersedia tetap lebih rendah dari ambang batas kesehatan setelah kebijakan pengumpulan gambar dipicu, Anda dapat menemukan informasi failed to garbage collect required amount of images dalam event node. Nilai default ambang batas kesehatan adalah 80%.
Kontainer diusir dari node:
Anda dapat menemukan informasi The node was low on resource: [DiskPressure] dalam event kontainer yang diusir.
Anda dapat menemukan informasi attempting to reclaim ephemeral-storage atau attempting to reclaim nodefs dalam event node.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika penggunaan disk node mencapai atau melebihi 85%. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Periksa kurva penggunaan disk di tab Pemantauan Node konsol dan identifikasi waktu terjadinya lonjakan penggunaan disk. Lalu, periksa apakah proses yang berjalan di node telah menggunakan sejumlah besar ruang disk. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node.
Jika sejumlah besar file telah menggunakan ruang disk, hapus file yang tidak lagi diperlukan. Untuk informasi lebih lanjut, lihat Selesaikan masalah ruang disk tidak mencukupi pada instance Linux.
Batasi
penyimpanan sementarayang dialokasikan ke pod di node. Untuk informasi lebih lanjut, lihat bagian Ubah batas atas dan bawah sumber daya CPU dan memori untuk pod dari topik "Kelola pod".Kami merekomendasikan Anda menggunakan layanan penyimpanan yang disediakan oleh Alibaba Cloud dan tidak menggunakan volume hostPath. Untuk informasi lebih lanjut, lihat Penyimpanan.
Perbesar ukuran disk node.
Kurangi beban node. Untuk informasi lebih lanjut, lihat bagian Sumber daya node tidak mencukupi untuk penjadwalan.
Alamat IP tidak mencukupi - InvalidVSwitchId.IpNotEnough
Penyebab
Dalam banyak kasus, alamat IP yang disediakan oleh node menjadi tidak mencukupi karena kontainer di node telah menggunakan sejumlah besar alamat IP.
Masalah
Pod gagal dimulai. Status pod ini adalah ContainerCreating. Anda dapat menemukan informasi InvalidVSwitchId.IpNotEnough dalam log pod. Untuk informasi lebih lanjut tentang cara memeriksa log pod, lihat bagian Memecahkan masalah pod dari topik "Pemecahan Masalah Pod".
time="2020-03-17T07:03:40Z" level=warning msg="Gagal menetapkan alamat ip privat: Error API Aliyun: RequestId: 2095E971-E473-4BA0-853F-0C41CF52651D Status Code: 403 Code: InvalidVSwitchId.IpNotEnough Message: VSwitch \"vsw-AAA\" yang ditentukan tidak memiliki cukup IpAddress., mencoba lagi"Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika node tidak dapat menyediakan alamat IP yang cukup. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Kurangi jumlah kontainer di node. Untuk informasi lebih lanjut, lihat bagian Sumber daya node tidak mencukupi untuk penjadwalan. Untuk informasi lebih lanjut tentang operasi terkait lainnya, lihat Apa yang Harus Dilakukan jika Alamat IP yang Tersedia Tidak Mencukupi Disediakan oleh vSwitch dalam Kluster yang Menggunakan Terway? dan Apa yang Harus Dilakukan jika Pod IP Masih Tidak Dapat Ditugaskan dalam Mode Jaringan Terway Setelah vSwitch Diperluas?.
Pengecualian jaringan
Penyebab
Dalam banyak kasus, pengecualian jaringan terjadi karena status node tidak normal, konfigurasi grup keamanan node tidak valid, atau jaringan kelebihan beban.
Masalah
Anda gagal masuk ke node.
Status node adalah Unknown.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika penggunaan bandwidth Internet keluar node mencapai atau melebihi 85%. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Jika Anda gagal masuk ke node, lakukan langkah-langkah berikut untuk memecahkan masalah:
Periksa apakah node berada dalam keadaan Running.
Periksa konfigurasi grup keamanan node. Untuk informasi lebih lanjut, lihat bagian Periksa grup keamanan node.
Jika jaringan node kelebihan beban, lakukan langkah-langkah berikut untuk memecahkan masalah:
Periksa kurva performa jaringan node di tab Pemantauan Node konsol dan cari lonjakan penggunaan bandwidth. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node.
Gunakan kebijakan jaringan untuk mengendalikan aliran lalu lintas pod. Untuk informasi lebih lanjut, lihat Gunakan kebijakan jaringan di kluster ACK.
Restart node yang tidak terduga
Penyebab
Dalam banyak kasus, node secara tidak terduga restart karena node kelebihan beban.
Masalah
Selama proses restart node, status node adalah NotReady.
Jika Anda mengaktifkan fitur peringatan untuk node kluster, Anda dapat menerima peringatan ketika node secara tidak terduga restart. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan peringatan, lihat Manajemen Peringatan.
Solusi
Jalankan perintah berikut untuk menanyakan waktu node direstart:
last rebootOutput yang diharapkan:

Periksa data pemantauan node dan pecahkan masalah penggunaan sumber daya abnormal berdasarkan waktu node direstart. Untuk informasi lebih lanjut, lihat bagian Periksa data pemantauan node.
Periksa log kernel node dan pecahkan masalah berdasarkan waktu node direstart. Untuk informasi lebih lanjut, lihat bagian Kumpulkan log diagnostik node.
Bagaimana cara menyelesaikan utilisasi I/O disk tinggi yang disebabkan oleh auditd atau pesan kesalahan berikut muncul dalam log sistem: audit: backlog limit exceeded?
Penyebab
Beberapa node yang ada di kluster dikonfigurasikan dengan aturan audit auditd untuk Docker secara default. Jika node menjalankan Docker, sistem akan menghasilkan log audit untuk Docker berdasarkan aturan audit auditd. Sejumlah besar log audit dapat dihasilkan ketika sejumlah besar kontainer berulang kali restart pada saat yang sama, sejumlah besar data ditulis ke dalam kontainer, atau bug kernel terjadi. Dalam kasus-kasus ini, utilisasi I/O disk dari proses auditd mungkin tinggi dan pesan kesalahan berikut mungkin muncul dalam log sistem: audit: backlog limit exceeded.
Masalah
Masalah ini hanya memengaruhi node yang menjalankan Docker. Situasi berikut terjadi setelah Anda menjalankan perintah tertentu di node:
Setelah Anda menjalankan perintah iotop -o -d 1, hasilnya menunjukkan bahwa nilai
DISK WRITEtetap pada 1MB/s atau lebih tinggi.Setelah Anda menjalankan perintah dmesg -d, hasilnya termasuk log yang berisi kata kunci berikut:
audit_printk_skb. Contoh:audit_printk_skb: 100 callbacks suppressed.Setelah Anda menjalankan perintah dmesg -d, hasilnya berisi kata kunci berikut:
audit: backlog limit exceeded.
Solusi
Lakukan operasi berikut untuk memeriksa apakah masalah di atas disebabkan oleh aturan audit auditd:
Masuk ke node.
Jalankan perintah berikut untuk menanyakan aturan auditd:
sudo auditctl -l | grep -- ' -k docker'Jika output berikut dikembalikan, masalah tersebut disebabkan oleh aturan audit auditd.
-w /var/lib/docker -k docker
Untuk menyelesaikan masalah ini, gunakan salah satu solusi berikut:
Tingkatkan kluster
Tingkatkan versi Kubernetes kluster. Untuk informasi lebih lanjut, lihat Tingkatkan kluster secara manual.
Ubah runtime kontainer menjadi containerd
Jika versi Kubernetes kluster tidak dapat diperbarui, Anda dapat mengubah runtime kontainer menjadi containerd untuk mencegah masalah ini. Lakukan operasi berikut pada pool node yang menggunakan Docker sebagai runtime kontainer:
Buat pool node baru dengan menyalin pool node yang menjalankan Docker. Pool node baru menggunakan containerd sebagai runtime kontainer. Pastikan konfigurasi pool node baru sama dengan konfigurasi pool node yang disalin kecuali untuk runtime kontainer.
Keluarkan node satu per satu dari pool node yang menjalankan Docker selama jam-jam sepi hingga semua pod aplikasi diusir dari pool node.
Perbarui konfigurasi auditd
Jika solusi di atas tidak berlaku, Anda dapat memperbarui konfigurasi auditd di node secara manual untuk menyelesaikan masalah ini. Lakukan operasi berikut pada node yang menggunakan Docker sebagai runtime kontainer:
Masuk ke node.
Jalankan perintah berikut untuk menghapus aturan auditd untuk Docker:
sudo test -f /etc/audit/rules.d/audit.rules && sudo sed -i.bak '/ -k docker/d' /etc/audit/rules.d/audit.rules sudo test -f /etc/audit/audit.rules && sudo sed -i.bak '/ -k docker/d' /etc/audit/audit.rulesJalankan perintah berikut untuk menerapkan aturan auditd baru:
if service auditd status |grep running || systemctl status auditd |grep running; then sudo service auditd restart || sudo systemctl restart auditd sudo service auditd status || sudo systemctl status auditd fi