Free 172‑Page Alibaba Cloud Kubernetes Handbook: Deep Dive into 6 Core Principles
This article offers a free 172‑page Alibaba Cloud Kubernetes handbook that explains six core principles and typical issues, and provides a detailed technical analysis of a recurring node NotReady problem, covering kubelet roles, PLEG timing, and the three‑minute readiness window.
Problem Description
A node in an Alibaba Cloud Kubernetes cluster intermittently transitions to NotReady. Restarting the node’s kubelet makes the node Ready for roughly three minutes, after which it reverts to NotReady. The issue is observed roughly once or twice per month per customer and can reappear after about 20 days.
Node‑Readiness Architecture
Node readiness is determined by four components:
etcd (cluster data store)
API Server (cluster entry point)
Node controller (updates node conditions) kubelet (runs on each node) kubelet plays two roles:
Cluster controller: periodically fetches pod specifications from the API Server and creates or deletes pods accordingly.
Node health monitor: gathers node status and reports it to the API Server via the NodeStatus mechanism.
PLEG and NodeStatus Interaction
The NodeStatus condition relies heavily on the Pod Lifecycle Events Generator ( PLEG ). PLEG periodically inspects container states, converts changes into events, and feeds them to the kubelet sync loop. If a PLEG check does not finish within its timeout, NodeStatus treats the node as unhealthy and marks it NotReady.
Default PLEG timing parameters are:
Execution interval: 1 second (time between successive checks)
Timeout: 3 minutes (maximum duration for a single check)
Observed Three‑Minute Ready Window
When kubelet restarts, the first PLEG check often fails to complete. The node remains Ready until the three‑minute timeout expires, at which point the NodeStatus controller synchronizes a NotReady condition to the API Server. This explains the consistent three‑minute readiness period after a kubelet restart.
Root Cause Investigation
The troubleshooting path traversed the Kubernetes stack, the container runtime, sdbus, and finally systemd. A bug in systemd caused the PLEG check to hang, triggering the timeout. The bug has been fixed upstream in systemd, reducing the recurrence of this issue.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Golang Shines
We share daily the latest Golang technical articles, practical resources, language news, tutorials, and real-world projects to help everyone learn and improve.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
