Amazon EKS API Server मॉनिटरिंग
ऑब्ज़र्वेबिलिटी बेस्ट प्रैक्टिसेज़ गाइड के इस सेक्शन में, हम API Server Monitoring से संबंधित निम्नलिखित विषयों पर गहराई से चर्चा करेंगे:
- Amazon EKS API Server Monitoring का परिचय
- API Server Troubleshooter डैशबोर्ड सेटअप करना
- API Server समस्याओं को समझने के लिए API Troubleshooter डैशबोर्ड का उपयोग
- API Server को Unbounded list calls समझना
- API Server को खराब व्यवहार रोकना
- API Priority and Fairness
- सबसे धीमी API calls और API Server Latency समस्याओं की पहचान करना
परिचय
अपने Amazon EKS managed control plane की मॉनिटरिंग आपके EKS क्लस्टर के स्वास्थ्य के साथ समस्याओं की सक्रिय रूप से पहचान करने के लिए एक बहुत महत्वपूर्ण Day 2 operational गतिविधि है। Amazon EKS Control plane मॉनिटरिंग एकत्रित मेट्रिक्स के आधार पर सक्रिय उपाय करने में मदद करती है।
हम इस सेक्शन में Amazon EKS API server मॉनिटरिंग के लिए Amazon Managed Service for Prometheus (AMP) और मेट्रिक्स के विज़ुअलाइज़ेशन के लिए Amazon Managed Grafana (AMG) का उपयोग करेंगे।
हम पहले Amazon Managed Service for Prometheus और Amazon Managed Grafana का उपयोग करके एक स्टार्टर डैशबोर्ड सेटअप करेंगे जो आपको Amazon Elastic Kubernetes Service (Amazon EKS) API Servers की troubleshooting में मदद करेगा।
API Server Troubleshooter डैशबोर्ड सेट अप करना
हम Amazon Elastic Kubernetes Service (Amazon EKS) API Servers की troubleshooting में मदद करने के लिए AMP के साथ एक स्टार्टर डैशबोर्ड सेटअप करेंगे।
अगला, AMP को डेटा सोर्स के रूप में उपयोग करते हुए अपना Amazon Managed Grafana workspace सेटअप करें। अंत में API troubleshooter dashboard डाउनलोड करें और मेट्रिक्स विज़ुअलाइज़ करने के लिए Amazon Managed Grafana में API troubleshooter dashboard json अपलोड करें।
समस्याओं को समझने के लिए API Troubleshooter डैशबोर्ड का उपयोग
मान लें कि आपने एक दिलचस्प ओपन-सोर्स प्रोजेक्ट पाया जिसे आप अपने क्लस्टर में इंस्टॉल करना चाहते थे। वह operator आपके क्लस्टर में एक DaemonSet तैनात करता है जो शायद malformed requests, अनावश्यक रूप से उच्च मात्रा में LIST calls उपयोग कर रहा है, या शायद इसके प्रत्येक DaemonSets आपके सभी 1,000 nodes पर हर मिनट आपके क्लस्टर पर सभी 50,000 pods की स्थिति का अनुरोध कर रहे हैं!
LIST बनाम WATCH को समझना
कुछ एप्लिकेशन को आपके क्लस्ट र में ऑब्जेक्ट्स की स्थिति समझने की आवश्यकता होती है। Kubernetes में, WATCH नामक कुछ के साथ ऐसा करने के अच्छे-व्यवहार वाले तरीके हैं, और कुछ अच्छे-व्यवहार-नहीं वाले तरीके हैं जो क्लस्टर पर हर ऑब्जेक्ट को सूचीबद्ध करते हैं।
एक अच्छा-व्यवहार WATCH
WATCH का उपयोग या push मॉडल के माध्यम से अपडेट प्राप्त करने के लिए एक एक, दीर्घकालिक कनेक्शन Kubernetes में अपडेट करने का सबसे स्केलेबल तरीका है।
नीचे की इमेज में हम दोनों API servers में इन दीर्घकालिक कनेक्शनों की संख्या का अंदाज़ा लगाने के लिए apiserver_longrunning_gauge का उपयोग करते हैं।

चित्र: apiserver_longrunning_gauge मेट्रिक

चित्र: 8 xlarge nodes के बीच WATCH calls।
API Server को Unbounded list calls समझना
LIST call के लिए, एक list call हर बार जब हमें किसी ऑब्जेक्ट की स्थिति समझने की आवश्यकता होती है तो हमारे Kubernetes ऑब्जेक्ट्स पर पूरा इतिहास खींच रहा है।
नीचे दिया गया request एक विशिष्ट namespace से pods माँग रहा है।
/api/v1/namespaces/my-namespace/pods
अगला, हम क्लस्टर पर सभी 50,000 pods का अनुरोध करते हैं, लेकिन एक समय में 500 pods के chunks में।
/api/v1/pods?limit=500
अगला call सबसे विघटनकारी है। पूरे क्लस्टर पर सभी 50,000 pods को एक साथ fetch करना।
/api/v1/pods