שירות Discovery Discovery NS
שירות דיסקברי DNS
1) למה אתה צריך את זה
במערכות מבוזרות, הצמתים מופיעים ונעלמים, והלקוחות חייבים למצוא מקרים של עבודות שירות במהירות ובאמינות. DNS - שכבת שמות אוניברסלית; תגלית שירות - אסטרטגיה להתאמת שם השירות עם נקודות קצה אמיתיות, לקיחת בחשבון בריאות, משקל ומדיניות ניתוב.
מטרות מפתח:- שמות יציבים במקום כתובות חלופיות,
- מדויק, אבל לא עדכון רועש (איזון בין רעננות וטי-טי-אל),
- הידרדרות ללא נפילה מוחלטת (כשל/בדיקת בריאות),
- ”ניחושים מינימליים” על הלקוח: פסקי זמן, מגשים מחדש, מדיניות מטמון.
2) מודלים לגילוי שירות
2. 1 צד לקוח
הלקוח עצמו פותר את השם לסט של נקודות קצה ומאזנים (סיבוב-רובין, EWMA, חשיש אחר מפתח). מקור - DNS (A/AAAA/SRV), רישום שירות (קונסול/אאוריקה), רשימה סטטית.
מקצוענים: פחות ספופ מרכזי, אלגוריתמים גמישים.
ההטרוגניות של הלקוחות, קשה יותר לעדכן את ההיגיון.
2. 2 שרת (צד שרת)
הלקוח עובר לחזית/LB (L4/L7 שער כניסה/כניסה). איזון ובדיקת בריאות בצד פרוקסי/איזון.
מקצוענים: מקום אחד של פוליטיקה, יכולת ראייה.
חסרונות: יש צורך בהיקף זמין ביותר (N + 1, multi-AZ).
2. 3 היברידי
DNS נותן קבוצה של נקודות כניסה (LBs) אזוריות, ואז L7/mesh איזון.
3) DNS: יסודות, רשומות ו ־ TTL
3. 1 סוגים בסיסיים
א/א - כתובות IPv4/IPv6.
CNAME - שם בדוי לשם אחר (לא לכינוי).
SRV - '_ service. _ proto. = = = מארח/פורט/משקל/עדיפות (עבור GRPC/LDAP/SIP, וכו ').
TXT/HTTP/HTTPS - metadata/points (כולל עבור תגלית HTTP).
NS/SOA - משלחת אזור ותכונות.
3. 2 TTL ומטמון
המטמון זמין מ: OS resulver, noldes (NoddLocal DNS/CoreorDNS), ספק, מחדשי ביניים ולקוח ספרייה. רעננות בפועל = min (TTL, מדיניות הלקוח). מטמון שלילי (NXDOMAIN) טמון גם הוא מעל SOA. מינימום '/' TTL '.
המלצות:- Prod-TL 30-12S עבור רשומות דינמיות, 300-60 עבור יציב.
- עבור מתגים (feilover), הכן TTL נמוך מראש, ולא ”בזמן שריפה”.
- שקול את המטמון הדביק של הספריות (Java/Go/Node) - אם יש צורך, הגדר את TTL של התזכורת בתוך זמן הריצה.
4) מדיניות איזון ופגיעה בסובלנות
RR משוקלל - משקולות על A/AAAA/SRV.
כשל - סטים ראשוניים/משניים (בדיקת בריאות בחוץ).
Geo/Latency - תגובה לאזור POP/הקרוב ביותר.
Anycast - IP אחד ב-POP שונה (BGP); עמידות לשיבושים אזוריים.
תשובות שונות בתוך VPC/on-prem ובאינטרנט.
GSLB הוא מאזן עולמי עם בדיקות בריאות ומדיניות (latency, geo, cability).
5) בדיקות בריאות ורעננות
DNS עצמו הוא ”מטומטם”: הוא אינו מכיר את בריאות האחוריים. לכן:- או בודק בריאות חיצוני מנהל רישומים/משקולות (GSLB, Route53/Traffic-policy, דגימות חיצוני-dns +).
- או שהלקוח/רשת עושה פליטה אקטיבית החוצה ומנסה שוב מנקודות קצה רבות.
6) קוברנטס: גילוי מתוך התיבה
שמות שירות: 'svc. שם המקום. svc. אשכול. מקומי ".
Clougust IP: IP וירטואלי יציב + kube-proxy/ebpf.
שירות ללא ראש (”cloughlouse IP: None”): נותן רישומי A לתרמילים (או תת-המיקומים שלהם), SRV לנמלים.
Indestrice: רשימה סקלרית של נקודות קצה (החלפת נקודות קצה).
אשכול DNS נחוש; תוספים משכתבים/תבנית/קדימה/מטמון; אזור "kube-dn'.
NodeLocal DNSCACHE: מטמון מקומי על הצומת = פחות איחור ויירוט של בעיות פתרון במעלה הזרם.
דוגמה: חסר ראש + SRV
yaml apiVersion: v1 kind: Service metadata: { name: payments, namespace: prod }
spec:
clusterIP: None selector: { app: payments }
ports:
- name: grpc port: 50051 targetPort: 50051
הלקוח יכול לפתור '_ grpc. _ tcp. תשלומים. Prod. svc. אשכול. מקומי (SRV) ולקבל מארח/יציאה/משקולות.
CoreorDNS (מקטע תצורה)
yaml apiVersion: v1 kind: ConfigMap metadata: { name: coredns, namespace: kube-system }
data:
Corefile:
.:53 {
errors health ready cache 30 loop forward. /etc/resolv. conf prometheus:9153 reload
}
NodeLOCAL DNS (רעיונות):
- Daemonset עם נחישות מקומית על 169. 254. 20. 10`; קובלט מציין את הנקודה הזו.
- מפחית את רזולוציית השם p99 ומגן מפני דש DNS במעלה הזרם.
7) תגלית שירות K8s
קונסול: סוכן, בדיקות בריאות, ספריית שירות, ממשק DNS (".consul'), KV לתצורות.
Eureka/OdKeeper/etcd: Registres for JVM/Legacy; לעתים קרובות בשיתוף עם סירה/שער.
שליח/איסטיו: EDS/xDS (Endpoint Discovery) ו-SDS (סודות); השירותים מוכרזים באמצעות מטוס הבקרה.
8) ביטחון DNS
DNSSEC: הגן על שלמות הרשומות (חתימת אזור). קריטי לנחלות ציבוריות.
DoT/DoH: ערוץ להצפנת רקורסיה (מדיניות פנימית, תאימות).
אזור פרטי - רק מVPC/VPN.
הגנה מפני הרעלת מטמון: יציאה/זיהוי אקראי, TLs קצר לדינמיקה.
מדיניות על יציאה: לאפשר DNS רק על החלטיים אמינים, בול עץ.
9) התנהגות לקוחה ונסיגה
כבוד TL: אל תטמון בלי סוף, אל ”רשע” עם החלטות תכופות (סערה לרקורסיביות).
גלגלי עיניים מאושרים (IPv4/IPv6), חיבורים מקבילים למספר A/AAALs מפחיתים את הזנב.
מגשים מחדש רק לבקשות אידמפוטנטיות; ג 'יטר, מגביל את מגשי התקציב.
- ג 'אווה: "קשרי רשת. מטמון. Tl ',' networkadress. מטמון. שלילי. Tl'.
- Go: 'GODEBUG = netdns = go '/' cgo', 'Resolver. העדפה ללכת ',' Dialtimeout'.
- צומת: "dns. Staffall Talusting Order (”ipv4first')”, ”Lookup” by ”all: true”.
- מנמיכים את ה-TTL מה-300 פי 60 24-48 שעות לפני ההחלפה המתוכננת.
- להחזיק סט קנרית של נקודות קצה במשקל נמוך לאימות.
- השתמש במשקל + בדיקת בריאות במקום עדכון מסה ידני של רשומות א.
- עבור סטטיקה/קצה - כל קאסט; עבור API - Geo/Latency + L7-feiler מהיר.
11) יכולת תצפית ו ־ SLO לשם
מדדים:- קצב/latency של שאילתות DNS, מטמון להיט-יחס, שגיאות לפי סוג (SERVFAIL/NXDOMAIN).
- אחוז הבקשות עם תגובות מעופשות (אם משתמשים במטמון מעופש).
- הצלחה של פעולות המשתמש בשינויי שיא (SLI עסקי).
- p95/p99 פתירות זמן בבקשות.
- Stratify the path: client # local cache = nodal cache # accuster resulver ec recursion.
- רצועות NXDOMAIN (שמות/שגיאות דפוס) ו-SERVFAIL (Recursion Supplices/Resource Limits).
12) דוגמאות הגדרות
CoreSDNS: שכתוב ואזור ספח
yaml
.:53 {
log errors cache 60 rewrite name suffix. svc. cluster. local. svc. cluster. local forward. 10. 0. 0. 2 10. 0. 0. 3
}
example. internal:53 {
file /zones/example. internal. signed dnssec
}
systemd-פתור
ini
[Resolve]
DNS=169. 254. 20. 10
FallbackDNS=1. 1. 1. 1 8. 8. 8. 8
Domains=~cluster. local ~internal
DNSSEC=yes
שליח: DNS-רענון דינמי
yaml dns_refresh_rate: 5s dns_failure_refresh_rate:
base_interval: 2s max_interval: 30s respect_dns_ttl: true
חיצוני-dns (תמיכה באזור ציבורי)
yaml args:
- --source=service
- --source=ingress
- --domain-filter=example. com
- --policy=upsert-only
- --txt-owner-id=cluster-prod
13) רשימת מימושים (0-30 יום)
0-7 ימים
ספריית שמות שירות, בחירת מודל (client-/server-side/hybrid).
TTL בסיסי, אפשר NodeLocal DNSCache, DNS metrics dashlods.
איסור על ”IP קשה” בהגדרה/קוד.
8-20 ימים
שירותים ללא ראש + SRV עבור gRPC; פרוסה אחורית מופעלת.
GSLB/משוקלל עבור חיצוני; בדיקות בריאות וכנרית.
לוח זמנים/מגשים מחדש ותקציב המגשים מחדש מוגדרים.
21-30 ימים
אופק מפוצל ואזורים פרטיים; DOT/DoH לפי מדיניות.
מבחן החלפה (על ידי TTL) ו feilover; לאחר ניתוח.
Mesh/EDS, מדיניות פליטה חיצונית מופעלת.
14) אנטי דפוסים
TTL = 0 ב prod = סערה כדי לחזור, עיכובים בלתי צפויים.
IP/פורט הארדקוד, אין CNAME/כינויים לרמות.
שינוי רשומות ”ידני” ללא בדיקות בריאות וקנריות.
החלטה אחת גלובלית ללא מטמון צומת (צוואר בקבוק).
התעלמות מטמון שלילי (קוצים NXDOMAIN).
מנסה ”לרפא” כשל במסד הנתונים באמצעות DNS במקום שכבת הנתונים/פיילובר.
15) מדדי בגרות
100% מהשירותים משתמשים בשמות; אפס מקרי איי-פי קשים.
CoreyDNS/NodeLocal במכירות, מטמון להיט-יחס> 90% על צמתים.
GSLB עם בדיקות בריאות, מתגי TTL מתועדים.
SRV/EndeptRice עבור stateful/gRPC, p99 פתירות בזמן ביישומים של 20-30 ms.
התראות עבור SERVFAIL/NXDOMAIN והשפלת יחס להיט מטמון.
בדיקות ב CI: ban ': עדכני' ו-hard-IP בתרשימים/הגדרות.
16) מסקנה
גילוי שירות הוא חוזה שם יציב ומשמעת מטמון. לבנות מודל היברידי: DNS נותן התחברות מהירה וקלה, L7/mesh - בריאות ומדיניות חכמה. שמור על TTL חכם, מטמון מארח, שירותים חסרי ראש ו-SRV במקום הדרוש, השתמש ב-GSLB/Anycast לגבולות אזוריים, שים עין על NXDOMAIN/SERVFAIL ו-p99 בזמן נחישות. אז שמך יהיה נכס אמין כמו השירות עצמו.