מודל הפריסה של Google Kubernetes Engine (GKE) הוא בחירה טובה לצוותים עצמאיים שרוצים לנהל בעצמם את התשתית וההגדרה של כלי ההתאמה האוטומטית לעומס שלהם ב-Kubernetes.
המסמך הזה הוא חלק מסדרה שכוללת גם:
- התאמה אוטומטית של Spanner לעומס
- סקירה כללית על הכלי Autoscaler
- פריסת כלי המידרוג האוטומטי של Spanner לפונקציות Cloud Run
הסדרה הזו מיועדת לצוותי IT, צוותי תפעול וצוותי Site Reliability Engineering (SRE) שרוצים לצמצם את התקורה התפעולית ולבצע אופטימיזציה של העלות של פריסות Spanner.
לפריסה ב-GKE יש את היתרונות והחסרונות הבאים:
יתרונות:
- מבוסס Kubernetes: לצוותים שאולי לא יכולים להשתמש בשירותים כמו פונקציות Cloud Run, פריסה ב-Kubernetes מאפשרת שימוש במידרוג אוטומטי.
- הגדרה: השליטה בפרמטרים של מתזמן הפעולות שייכת לצוות שבבעלותו מופע Spanner, ולכן יש לו את ההרשאות הכי גבוהות להתאמת המידרוג האוטומטי לצרכים שלו.
חסרונות:
- תשתית: בהשוואה לעיצוב של פונקציות Cloud Run, נדרשים שירותים ותשתית לטווח ארוך.
- תחזוקה: כל צוות אחראי על ההגדרה והתשתית של Autoscaler, ולכן יכול להיות שיהיה קשה לוודא שכל מערכות ה-Autoscaler בחברה פועלות לפי אותן הנחיות עדכון.
- ביקורת: בגלל רמת השליטה הגבוהה של כל צוות, ביקורת מרכזית עשויה להיות מורכבת יותר.
בדף הזה מוסברות שתי דרכים לפריסת המידרוג האוטומטי ב-GKE, בהתאם לדרישות שלכם:
- טופולוגיית פריסה מנותקת. היתרון של מודל הפריסה המופרד הוא שאפשר להקצות רכיבי Poller ו-Scaler הרשאות נפרדות, כך שהם יפעלו כחשבונות שירות נפרדים. כלומר, אתם יכולים לנהל את שני הרכיבים ולהרחיב אותם בהתאם לצרכים שלכם. עם זאת, מודל הפריסה הזה מחייב פריסה של רכיב ה-Scaler כשירות שפועל לאורך זמן, וזה צורך משאבים.
- טופולוגיית פריסה מאוחדת. היתרון של מודל הפריסה המאוחד הוא שאפשר לפרוס את הרכיבים Poller ו-Scaler כ-Pod יחיד, שפועל כ-משימת cron של Kubernetes. כששני הרכיבים נפרסים כ-pod יחיד, אין רכיבים שפועלים לאורך זמן ונדרש רק חשבון שירות יחיד.
ברוב תרחישי השימוש, מומלץ להשתמש במודל הפריסה המאוחד.
הגדרות אישיות
הכלי Autoscaler מנהל את מופעי Spanner באמצעות ההגדרה שמוגדרת ב-Kubernetes ConfigMap.
אם צריך לבצע סקר של כמה מופעי Spanner באותו מרווח זמן, מומלץ להגדיר אותם באותו ConfigMap. הדוגמה הבאה היא של הגדרה שבה שני מופעי Spanner מנוהלים באמצעות הגדרה אחת:
apiVersion: v1
kind: ConfigMap
metadata:
name: autoscaler-config
namespace: spanner-autoscaler
data:
autoscaler-config.yaml: |
---
- projectId: spanner-autoscaler-test
instanceId: spanner-scaling-linear
units: NODES
minSize: 5
maxSize: 30
scalingMethod: LINEAR
- projectId: spanner-autoscaler-test
instanceId: spanner-scaling-threshold
units: PROCESSING_UNITS
minSize: 100
maxSize: 3000
metrics:
- name: high_priority_cpu
regional_threshold: 40
regional_margin: 3
למופע יכולה להיות הגדרה אחת של Autoscaler עם השיטה הלינארית לפעולות רגילות, וגם הגדרה נוספת של Autoscaler עם השיטה הישירה לעומסי עבודה מתוכננים של אצווה. רשימת האפשרויות המלאה להגדרות מופיעה בקובץ Poller README.
פריסה ל-GKE
כדי ללמוד איך לפרוס את Autoscaler ב-GKE במודל פריסה מופרד או מאוחד, אפשר לעיין במדריך המפורט לפריסה ב-GKE.
המאמרים הבאים
- איך פורסים את הכלי Autoscaler לפונקציות Cloud Run
- מידע נוסף על ערכי הסף המומלצים ב-Spanner
- מידע נוסף על מדדי ניצול CPU ב-Spanner ועל מדדי זמן האחזור
- כאן אפשר לקרוא על שיטות מומלצות לעיצוב סכימת Spanner כדי להימנע מנקודות חמות ולטעון נתונים ל-Spanner.
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.