संचालन और → प्रबंधन निष्पादन नीतियां और रनटाइम प्रतिबंध
निष्पादन नीतियाँ और रनटाइम प्रतिबंध
1) उद्देश्य
रनटाइम नीतियां सेवाओं के व्यवहार को अनुमानित, सुरक्षित और किफायती बनाती हैं: "शोर पड़ोसियों" को सीमित करें, लीक और ओवरहीटिंग को रोकें, लोड बढ़ ने पर एसएलओ का अनुपालन और प्रतिधारण सुनिश्चित करें।
मुख्य उद्देश्य: अलगाव, संसाधनों का समान आवंटन, नियंत्रित गिरावट, प्रजनन योग्यता, लेखा परीक्षा।
2) स्कोप
कम्प्यूटिंग और मेमोरी: सीपीयू, रैम, जीसी रुकता है, थ्रेड लिमिट।
डिस्क/भंडारण: IOPS/थ्रूपुट, कोटा, fs-polices (केवल पढ़ें)।
Сеть: egress/ingress, बैंडविड्थ आकार, नेटवर्क नीतियां।
प्रक्रियाएं/सिस्टम कॉल: सेकंडकॉम्प, क्षमताएं, यूलिमिट।
ऑर्केस्ट्रेशन: कुबर्नेट्स QoS, अनुरोध/सीमा, प्राथमिकताएं, दाग/आत्मीयता।
एपीआई/गेटवे: दर-सीमा, कोटा, टाइमआउट/रिट्रे, सर्किट-ब्रेकर।
डेटा/ईटीएल/धाराएँ: बैच/स्ट्रीम संगामिति, उपभोक्ता अंतराल बजट।
सुरक्षा: AppArmor/SELinux, जड़ रहित, रहस्य/kofigi।
पॉलिसी-ए-कोड: ओपीए/गेटकीपर, किवर्नो, कॉन्फेस्ट।
3) बुनियादी सिद्धांत
डिफ़ॉल्ट रूप से असफल-सुरक्षित: ड्रॉप की तुलना में अनावश्यक अनुरोधों को छोड़ ना बेहतर है।
बजट-संचालित: टाइमआउट/रिट्रेज़अनुरोध समय बजट और एसएलओ त्रुटि बजट में फिट होते हैं।
छोटा विस्फोट त्रिज्या: namespace/pool/host/shard अलगाव।
घोषणात्मक और श्रव्य: सभी प्रतिबंध - कोड/भंडार + लॉग में।
बहु-किरायेदार निष्पक्षता: कोई भी किरायेदार/टीम पूरे क्लस्टर को "चूस" नहीं सकती है।
4) कम्प्यूटिंग और मेमोरी
4. 1 Kubernetes и cgroup v2
अनुरोध/सीमाएं: अनुरोध सीपीयू/मेमोरी के हिस्से की गारंटी देते हैं; सीमाओं में थ्रॉटलिंग/OOM-किलर शामिल हैं।
QoS कक्षाएं: गारंटीड/बर्स्टेबल/बेस्टएरर - गारंटीड/बर्स्टेबल में महत्वपूर्ण वर्कफ़्लो रखें।
CPU: 'cpu। शेयर ',' cpu। अधिकतम '(थ्रॉटल), पिनिंग के लिए CPuset।
मेमोरी: 'मेमोरी। अधिकतम ',' मेमोरी। स्वैप करें। प्राथमिकता के लिए अधिकतम '(आमतौर पर स्वैप ऑफ)।
4. 2 पैटर्न
नोड पर हेडरूम 20-30%, दोहराव के लिए विरोधी आत्मीयता।
जीसी सीमाएँ: JVM '-Xmx' ulimit: 'nofile', 'nproc', 'fsize' - सर्विस प्रोफाइल द्वारा। 5) डिस्क और भंडारण पीवीसी/क्लस्टर-भंडारण पर आईओपीएस/थ्रूपुट कोटा; लॉग/डेटा पृथक्करण। केवल रूट एफएस, अस्थायी फ़ाइलों के लिए टीएमपीएफ़, आकार सीमा '/टीएमपी '। FS-वॉचडॉग: वॉल्यूम भरने और विकास को इनोड करने के लिए अलर्ट। 6) नेटवर्क और यातायात नेटवर्कपॉलिसी (इंग्रेस/एग्रेस) - शून्य-ट्रस्ट पूर्व-पश्चिम बैंडविड्थ सीमा: tc/egress-polices, QoS/DSCP महत्वपूर्ण प्रवाह के लिए। एग्रेस नियंत्रक: अनुमत डोमेन/सबनेट्स की सूची, ऑडिट डीएनएस। mTLS + TLS नीतियाँ - एन्क्रिप्शन और जबरन प्रोटोकॉल संस्करण। 7) प्रक्रिया सुरक्षा Seccomp (allowist syscalls), AppArmor/SELinux प्रोफाइल। लिनक्स क्षमताओं को ड्रॉप करें (न्यूनतम छोड़ें), 'RunAsNonRoot', 'readeOlnRootFilesystem'। रूटलेस कंटेनरों, चित्रों और प्रमाणनों पर हस्ताक्षर किए। सीक्रेट-केवल वॉल्ट/केएमएस के माध्यम से, छोटे टीटीएल के साथ टीएमपी-टोकन। 8) समय नीतियां: टाइमआउट, रिट्रीट, बजट टाइमआउट बजट: सभी हॉप्स का योग ≤ एसएलए एंड-टू-एंड। बैकऑफ + जिटर के साथ रेट्राई, त्रुटि वर्ग में अधिकतम प्रयास। सर्किट-ब्रेकर: थ्रेशोल्ड के ऊपर त्रुटि %/टाइमआउट p95 के साथ खोलें - तेजी से विफलताएं। Bulkheads: महत्वपूर्ण रास्तों के लिए अलग कनेक्शन-पूल/कतारें। Backpressure: उपभोक्ताओं को पिछड़ ने के लिए उत्पादकों को सीमित 9) दर-सीमा, कोटा और प्राथमिकता एल्गोरिदम: टोकन/लीकी बाल्टी, जीसीआरए; स्थानीय + वितरित (रेडिस/दूत/वैश्विक)। Granularity: API कुंजी/उपयोगकर्ता/संगठन/क्षेत्र/समापन बिंदु। प्राथमिकता ग्रेडिएंट्स: "भुगतान/प्राधिकरण" प्रवाह - सोना, एनालिटिक्स - कांस् प्रति दिन/महीने कोटा, "फट" और "निरंतर" सीमा; 429 + रीट्री-आफ्टर। 10) ऑर्केस्ट्रेशन और प्लानर Class: विस्थापन से P1 फली की सुरक्षा। PodDis बजट: अपडेट पर डाउनटाइम बाउंड। टेंस/टॉलरेशन, (विरोधी) आत्मीयता - अलगाव कार्यभार। RuntimeClass: सैंडबॉक्स के लिए gVisor/Firecracker/Wasm। गार्ड थ्रेसहोल्ड और मैक्स-प्रतिकृतियों के साथ क्षैतिज/ऊर्ध्वाधर ऑटोस्कलिंग। 11) डेटा/ईटीएल/स्ट्रीम नीतियां प्रति कार्य/विषय, अधिकतम बैच आकार, चेकपॉइंट अंतराल। उपभोक्ता अंतराल बजट: चेतावनी/महत्वपूर्ण; DLQ और रिट्रे सीमा। स्टोरफ्रंट के लिए ताजगी एसएलए, प्रॉड ट्रैफिक की चोटियों पर भारी नौकरियों का एक ठहराव। 12) नीति-ए-कोड और प्रवेश-नियंत्रण OPA गेटकीपर/Kyverno: अनुरोधों/सीमाओं के बिना कोई फली नहीं, 'HostNetwork', ': नवीनतम' के साथ कोई 'ReadOlOnRootFilesystem' नहीं। पूर्व प्रतिबद्ध Helm/K8s/Terraform जाँच के लिए सबसे कम। उत्परिवर्तन नीतियां: ऑटो-एडिंग साइडकार (एमटीएलएस), एनोटेशन, सेकंडप्रोफाइल। 13) अवलोकन और अनुपालन मैट्रिक्स अनुपालन%: सही अनुरोध/सीमा/लेबल के साथ पोड का प्रतिशत। सुरक्षा मुद्रा: सेकंडकॉम्प/AppArmor/रूटलेस के साथ फली का हिस्सा। दर-सीमा हिट%, शेड%, थ्रॉटल%, 429 शेयर। p95 टाइमआउट/रिट्रेसेस, सर्किट-ओपन अवधि। OOM मारता है/निष्कासन, CPU गला सेकंड। नेटवर्क egress ने घटनाओं से इनकार किया, allowist यादों को समाप् 14) चेकलिस्ट सेवा देने से पहले 15) एंटी-पैटर्न अनुरोध/सीमा के बिना: "फट" पड़ोसियों को खाता है - कैस्केडिंग क्रैश। बिना किसी झटके के वैश्विक पीछे हटना: व्यसनों में एक तूफान। अनंत समय: "हैंगिंग" कनेक्शन और पूल की थकावट। ': नवीनतम' और म्यूटेबल टैग: अप्रत्याशित रनटाइम बिल्ड। ओपन एग्रेस: लीक और अप्रबंधित निर्भरता। कोई पीडीबी नहीं: अपडेट पूरे पूल को खटखटाते हैं। 16) मिनी प्लेबुक भुगतान-सेवा पर ए। सीपीयू थ्रॉटल% 1. सीमा/अनुरोध और प्रोफ़ाइल गर्म पथ जाँचें। 2. अस्थायी रूप से अनुरोध उठाएं, p95 विलंबता से ऑटोस्केल चालू करें। 3. कैश-बैक की सीमाएं/दरें सक्षम करें, प्रश्नों की जटिलता को कम करें। 4. पोस्ट-फिक्स: डीनोर्मलाइजेशन/सूचकांक, सीमाओं का संशोधन। बी। 429 वृद्धि और एपीआई शिकायतें 1. चाबियों/संगठनों पर रिपोर्ट - कोटा में भाग गया। 2. पदानुक्रमित कोटा (per- org→per -key) दर्ज करें, सोने के लिए फट उठाएं। 3. बैकऑफ पर संचार और मार्गदर्शन; अनुकूली सीमा सक्षम करें। बी। मास OOM मारता है 1. संगति को कम करें, ढेर सीमा और प्रोफाइलिंग सक्षम करें। 2. वास्तविक पीक-उपयोग के लिए Xmx/GOMEMLIMIT को पुनर्गणना करें। 3. रिट्रेन जीसी/पूल, स्वैप-ऑफ और सॉफ्ट-लिमिट अलर्ट जोड़ें। 17) कॉन्फ़िगरेशन उदाहरण 18) परिवर्तन और घटना प्रबंधन के साथ एकीकरण कोई भी नीति छूट RFC/CAB और TTL के साथ अस्थायी अपवाद के माध्यम से है। नीति उल्लंघन की घटनाएं - पोस्टमार्टम और नियम अपडेट। अनुपालन डैशबोर्ड रिलीज कैलेंडर से जुड़े हैं। 19) नीचे की रेखा निष्पादन नीतियां मंच के लिए एक "रेलिंग" हैं: वे तेजी से ड्राइविंग में हस्तक्षेप नहीं करते हैं, वे गिरने की अनुमति नहीं देते हैं। घोषणात्मक बाधाएं, स्वचालित प्रवर्तन, अच्छे मैट्रिक्स, और अपवाद अनुशासन अराजक शोषण को एक प्रबंधनीय और पूर्वानुमेय प्रणाली में बदल देते हैं - नियंत्रित लागत और स्थायी एसएलओ के साथ।
OPA (रेगो) का उदाहरण - टाइमआउट ≤ 800 ms:
yaml apiVersion: kyverno. io/v1 kind: ClusterPolicy metadata:
name: require-resources spec:
validationFailureAction: Enforce rules:
- name: check-limits match:
resources:
kinds: ["Pod"]
validate:
message: "We need resources. requests/limits for CPU and memory"
pattern:
spec:
containers:
- resources:
requests:
cpu: "?"
memory: "?"
limits:
cpu: "?"
memory: "?"rego package policy. timeout
deny[msg] {
input. kind == "ServiceConfig"
input. timeout_ms> 800 msg: = sprintf ("timeout% dms exceeds budget 800ms," [input. timeout_ms])
}
मासिक
दूत दर-सीमा (वैचारिक रूप से टुकड़ा):
yaml securityContext:
runAsNonRoot: true allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities:
drop: ["ALL"]
Nginx ingress - टाइमआउट और प्रतिबंध:
yaml rate_limit_policy:
actions:
- request_headers:
header_name: "x-api-key"
descriptor_key: "api_key"yaml nginx. ingress. kubernetes. io/proxy-connect-timeout: "2s"
nginx. ingress. kubernetes. io/proxy-read-timeout: "1s"
nginx. ingress. kubernetes. io/limit-rps: "50"