הגדרת VK Cloud Managed Kubernetes מקצה לקצה: זמינות גבוהה, CI/CD, ניטור

אשכול המנוהל על ידי ספק לעתים קרובות מאבד יציבות בעומס שיא, והשחרורים יוצאים ידנית ועם זמני השבתה. אנו מגדירים VK Cloud Managed Kubernetes מקצה לקצה: אזורי עמידות, סקייל אוטומטי והפצת שינויים צפויה. קצב השחרורים עולה פי כמה, ופעולות ידניות מוחלפות בנהלים.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

מדוע VK Cloud Managed Kubernetes מאבד יציבות

VK Cloud Managed Kubernetes מסיר מהצוות את מישור הניהול, העדכונים והזמינות של מאסטר-הנודים — אך עמידות הקלאסטר לא נגמרת בכך. צוואר הבקבוק של הקלאסטר נמצא נמוך יותר: בפריסת נודי העבודה, בכללי המיקום של מופעי האפליקציה ובקיומן של נקודות שחזור. הפלטפורמה מוכנה לכשלים, הקונפיגורציה — לעתים קרובות לא.

הסיבה הנפוצה ביותר להשבתת אפליקציה — כל הנודים והדיסקים המחוברים באזור זמינות אחד. כשל של אזור זמינות לוקח בבת אחת גם את המופעים הפעילים וגם את הנתונים על הכרכים, ובדיקות המוכנות מוגדרות פורמלית, ולכן התעבורה ממשיכה עוד זמן מה לזרום אל פודים לא פעילים. לא פחות נפוץ הוא היעדר פיזור של רפליקות: כללי המיקום מתוארים ידנית ונשכחים לעדכן בעת סקיילינג.

קבוצת סיכונים נפרדת — עריכות ידניות ישירות בקלאסטר. השינוי לא נכנס למניפסטים, סחף קונפיגורציה מצטבר, ועדכון מתוכנן של הנודים מוחק את מה שתוקן «באופן זמני» בלילה.

גיבוי אובייקטים וכרכים או כבוי, או שלא נבדק אף פעם בשחזור חוזר — נקודות שחזור ברורות וזמן שבו האפליקציה עולה אין לאף אחד.

כל זה לא נוגע לשירות עצמו, אלא לאופן שבו הוא בנוי. בהמשך נפרט כיצד זה נסגר: פיזור בין אזורים, תיאור התשתית כקוד, נוהל עדכונים, גיבוי עם שחזור מאומת ומוניטורינג שתופס דגרדציה לפני המשתמשים.

עמידות, סקיילינג אוטומטי ושחרור צפוי

העמידות מפסיקה להיות פעולה ידנית. קלאסטר Managed Kubernetes מפוזר על פני כמה אזורי זמינות: בעת כשל של נוד העומס עובר לנותרים, וזמן השחזור של השירות נמדד בדקות, ולא בזמן עד להגעתו של המהנדס התורן.

סוג כשל נפרד, שבו נוד אחד גורר אחריו את כל קו הפרודקשן, פשוט מפסיק להתקיים לאחר ההגדרה — אין לו יותר תרחיש.

סקיילינג אוטומטי של עומס פועל בשני מעגלים: הפודים גדלים לפי צריכת המשאבים בפועל, ומאגר הנודים מתרחב בהתאם להם. שעות שיא וזינוקים חד-פעמיים בתעבורה עוברים בלי הוספה ידנית של כוח מחשוב, ובשעות הלילה הקלאסטר מתכווץ לגודל הבסיסי, ולכן הוצאות התשתית מפסיקות לגדול יחד איתה.

גיבויים ושחזור מתוארים כהליך שניתן לאימות, ולא כתקווה: לוח זמנים של snapshots לכרכים ולקונפיגורציה, אחסון נפרד, שחזורי בדיקה שגרתיים לקלאסטר נקי. זמן השחזור בתרחיש כזה ידוע מראש — הוא נמדד בתרגילים, ולא מתברר ברגע התקלה.

תדירות השחרורים מפסיקה להיתקע בפחד לשבור את קו הפרודקשן. הפריסה מתבצעת בגלים עם rollback אוטומטי לפי מטריקות, ולכן שינויים עולים לפרודקשן כמה פעמים בשבוע במקום «פעם בחודש, ומוטב בלילה».

מטריקות, התראות ולוגים נאספים במעגל אחד, וכללי האסקלציה מביאים את הסיבה לתורן לפני שהמשתמש מבחין בה.

השוואת אפשרויות: Kubernetes מנוהל או קלאסטר עצמאי

שירות מנוהל, קלאסטר עצמאי על תשתית משלכם וסכמה היברידית פותרים משימה אחת בדרכים שונות: הם מחלקים אחרת את האחריות על שכבת הניהול, העדכונים והעמידות. לכן אין טעם להשוות אפשרויות רק לפי חומרה — השאלה היא כמה זמן הנדסי אתם מוכנים להחזיק בסגל, ובאיזו מידה מוגבל מיקום הנתונים בתקיפות.

אפשרות מתי מתאימה מגבלות
קלאסטר מנוהל (לדוגמה, VK Cloud Managed Kubernetes) נדרש קו פרודקשן תוך ימים ספורים, בלי צוות ייעודי לתחזוקת שכבת הניהול פחות שליטה בגרסאות שכבת הניהול ובהגדרות הרשת, קיימות מגבלות פלטפורמה על סוגי הנודים
קלאסטר עצמאי על השרתים שלכם הנתונים חייבים להישאר במעגל שלכם, נדרשות סכמות רשת לא סטנדרטיות וארונות משלכם עדכונים, גיבוי המצב, עמידות שכבת הניהול ותורנות 24/7 — באחריותכם
סכמה היברידית שירותים רגישים נשארים על התשתית שלכם, השאר עובר לענן רשת מורכבת יותר, איסוף מטריקות אחיד ומדיניות הרשאות רוחבית — נדרשת שכבת ניהול משותפת

הקריטריון המעשי פשוט: אם אין מהנדסים שמוכנים להיות אחראים על שכבת הניהול מסביב לשעון, מעגל מנוהל מסיר סוג שלם של כשלים. אם הרגולציה אוסרת הוצאת נתונים, היברידי נותן פשרה — אבל בלי שכבת observability משותפת יש לחפש תקלות בשני מקומות בבת אחת, וזמן השחזור גדל.

שלבי העבודה: אבחון עומס, עמידות, הוצאת שינויים

את העבודה מובילים באיטרציות: כל שלב מסתיים בארטיפקט שאפשר לבדוק, ולא ב«מוכן» שבעל-פה. הסדר נוקשה — ממיפוי המעגל הנוכחי ועד לקלאסטר מנוהל ותפעול מלווה.

  1. אבחון התשתית. ממפים את השירותים, מודדים פרופיל עומס לאורך היממה ובשיאים, ומסמנים מה כבר עבר קונטיינריזציה. התוצר — מפת תלויות ורשימת צווארי בקבוק שקובעים את טופולוגיית המעגל.
  2. תכנון סכמת הקלאסטר. מחלקים את קבוצות הנודים לפי קריטיות: עומס קבוע, משימות שיא, רכיבי מערכת. מקבעים את מודל הרשת, מדיניות ההרשאות בין השירותים, האחסון וכללי הסקיילינג האוטומטי.
  3. צינור הוצאת שינויים. מגדירים בניית אימג'ים, אחסונם ופריסה דקלרטיבית בין סביבות. rollback מתוכנן בנפרד — הגרסה הקודמת חייבת לחזור בפעולה אחת, בלי עריכות ידניות.
  4. בדיקת עמידות. עורכים תרגילים: מוציאים נוד מכלל פעולה, מדמים כשל של אזור זמינות, משחזרים מגיבויים. מודדים את זמן השחזור ומוודאים שפיזור מחדש של העומס לא מפיל שירותים.
  5. מוניטורינג והתראות. מגדירים מטריקות, איסוף לוגים ואותות לאירועים שבאמת דורשים התערבות. התורן לומד על דגרדציה לפני המשתמשים ורואה מיד את מקורה.
  6. מסירה לתפעול. מוסרים תיעוד, הרשאות ותפקידים, מכשירים את הצוות ומסכמים נוהל תמיכה: עדכונים מתוכננים, גיבוי, חקירת תקלות.

מה נשאר במעגל שלכם: סכמות, מדיניות הרשאות, נהלים

אנחנו מכינים את הארטיפקטים לא «לצורך הווי», אלא כתיעוד עובד: לכל אחד מהם מתוארים הייעוד, הבעלים וההשלכות של עקיפתו. הכול נמצא במאגר לצד קוד התשתית — מהנדס חדש לא צריך לשחזר את ההיגיון מהתכתבויות של אחרים.

  • מדיניות הרשאות — תפקידים והצמדות בקלאסטר: מי פורש לפרודקשן, מי קורא לוגים, מי משנה קונפיגורציה. בנפרד מתוארות אילו הרשאות לא ניתנות לחשבונות שירות ומדוע.
  • הפרדת תפקידים — מטריצת «צוות → מרחב שמות → רמת גישה» עם הליך מתן ושלילת הרשאה. אישור עובר דרך review, ולא דרך התכתבות בצ'אט.
  • סכמת הקישוריות ברשת — טופולוגיית תתי-הרשתות, נקודות כניסה, מסלולים בין שירותים למערכות חיצוניות, כללי מדיניות הרשת. הסכמה מתעדכנת יחד עם השינויים, ולא בעקבות תקלה.
  • נוהל גיבוי — מה מגבים, באיזו תדירות, היכן נשמרים העותקים וכמה נמשך השחזור. מצוין מי מפעיל את השחזור וכיצד לוודא שהנתונים שלמים.
  • תיעוד התשתית — תיאור דקלרטיבי של הקלאסטר והסביבות, משתנים, תלויות, סדר פריסה מאפס. אפשר להקים סביבה מחדש בדרך ניתנת לשחזור.
  • נוהל עדכון — כיצד יוצאות גרסאות חדשות של נודים ורכיבים, כיצד בודקים תאימות וכיצד חוזרים לאחור אם הבדיקה לא עברה.
  • הוראות לתקלות אופייניות — סדר הפעולות בעת אי-זמינות של נוד, התמלאות האחסון, שגיאות רשת; עם אבחון ונקודות אסקלציה.

ערכה כזו מסירה את התלות באנשים מסוימים: הלקוח מעביר את המעגל לצוות פנימי או לקבלן אחר בלי לאבד הקשר, ושינויים בתשתית עוברים באותו תהליך review כמו הקוד.

קייס: כיצד הקלאסטר הפסיק ליפול בעומס שיא

לפני: נוד ניהול אחד והפעלות מחדש בלילה

השירות של הלקוח חי בשיאים: העומס גדל פי כמה בחלון זמן קצר, ובין השיאים יורד כמעט לאפס. את הקלאסטר הרכיבו ידנית — מעגל הניהול באזור אחד, קבוצות נודים בגודל קבוע, בדיקות מוכנות הוגדרו פורמלית ולא חסמו מופעי אפליקציה שאינם מוכנים. בשיא חלק מהמופעים נשארו ברוטציה כשאינם פעילים, והשירות החזיר שגיאות במקום תשובות.

מדידות לפני השינויים: אי-זמינות — כ-1.5% מזמן היממה, תגובה ממוצעת לכשל — 40+ דקות, משום שהעירו את התורן בלילה, 7–9 התערבויות ידניות ביממה: הפעלות מחדש, הרחבה ידנית של קבוצות נודים, עריכת מכסות תוך כדי תנועה.

מה שינינו

הקלאסטר הועבר ל-VK Cloud Managed Kubernetes. מעגל הניהול פוזר על פני שלושה אזורי זמינות, קבוצות הנודים הועברו לסקיילינג אוטומטי לפי עומס בפועל, רפליקות האפליקציה פוזרו בין האזורים כך שכשל של אחד לא ייקח את השירות כולו.

על כל השירותים הוגדרו בדיקות מוכנות וחיות, הגבלות על פינוי בו-זמנית וסגירה תקינה של חיבורים, ועדכונים — בצעדי canary עם rollback אוטומטי לפי מטריקות שגיאות והשהיה.

אחרי: מטריקות באותו עומס שיא

אי-זמינות בחלונות שיא — עד 0.05%, כשל של נוד המשתמש כבר לא מבחין בו: התעבורה מוסטת לרפליקות חיות בתוך שניות. ההתערבויות הידניות הצטמצמו ל-1–2 בחודש, ואלו עדכונים מתוכננים, ולא כיבוי שריפות.

זמן התגובה לאירוע ירד מ-40+ דקות ל-4–5, וכשרוב המקרים המערכת משתקמת על ידי אוטומציה, ולא על ידי המהנדס התורן.

מה לעשות אם הקלאסטר כבר פרוס ומתוחזק ידנית

אין צורך להרוס מעגל שהורכב ידנית ולהרכיב אותו מחדש. קלאסטר מנוהל ב-VK Cloud מוקם לצד זה שעובד, והעומס עובר אליו במנות — העברת הקלאסטר הופכת לסדרה של מיתוגים הפיכים, ולא ללילה מסוכן אחד.

מתחילים במיפוי. שירותים ללא מצב עוברים במניפסטים במעבר אחד, ואילו עומסים עם דיסקים קובעים את תקציב הזמן — הם אלו שמגדירים היכן עובר גבול הסיכון. את כל השאר אפשר להגר בימי עבודה, בלי להוציא את המוצר מכלל פעולה.

השלב הראשון — שירותים לא קריטיים וכלים פנימיים. מאזן חיצוני מפזר את התעבורה בין המעגל הישן לחדש, החלק מוסט באחוזים, ו-rollback הוא החזרת משקלים, ולא שחזור מגיבוי. כך ההגירה ההדרגתית מתבצעת בלי השבתה: עד שהמעגל החדש לא אישר יציבות תחת עומס, המשתמש לא מבחין בדבר.

מה שאפשר לא לגעת בו: מאגר האימג'ים, הסודות, אזור השמות, בסיסי נתונים חיצוניים. הכתובות שלהם משתנות אחרונות — כששני המעגלים כבר עובדים במקביל והבדיקות עוברות.

הסיכון העיקרי בהעברה מרוכז בשירותים עם כתיבה: הם זקוקים לרפליקציה או לחלון של כמה דקות. השאר מועבר בלי עצירה ועם חזרה מיידית — ולכן סדר העבודה נבנה מהפשוט למורכב, ולא להיפך.

ספקות טכניים: הרשאות, עדכונים, עמידות אזורים

ההתנגדויות נשמעות בדרך כלל עוד לפני החתימה — אנחנו מטפלים בהן מיד, ולא בחודש העבודה הראשון. קלאסטר Managed Kubernetes ב-VK Cloud נשאר בחשבון שלכם: אנחנו מקבלים גישה מוגבלת ואיננו היחידים שמחזיקים את הידע על הקונפיגורציה.

כיצד מתחלקות הרשאות הגישה בין הצוותים?

מפתחים מקבלים תפקידים בגבולות מרחבי השמות שלהם, וצוות הפלטפורמה — על הנודים ורכיבי המערכת. אנחנו עובדים עם חשבונות שירות נפרדים עם תיעוד פעולות ביומן; הגישה נשללת בצעד אחד, בלי לעצור את הקלאסטר.

כיצד מתעדכנות גרסאות הנודים והאם תהיה השבתה?

יצירה מחדש מתוכננת נוד-אחר-נוד: העומס עובר לנותרים, והמוכנות נבדקת לפני העברת הבא. תאימות לוח הבקרה לנודי העבודה נבדקת מראש, ו-rollback — החזרת הקבוצה לתבנית הקודמת.

מה יקרה בעת כשל של אזור זמינות?

אנחנו מפזרים נודים על פני כמה אזורים, ועותקים של שירותים קריטיים — לפי כללי מיקום, כך שלא יתכנסו לאזור אחד. בעת כשל של אזור העומס עובר לנותרים, אם האפליקציה עולה בלי צעדים ידניים.

היכן גבול האחריות של הקבלן?

שכבת הפלטפורמה — קונפיגורציה, מדיניות עדכונים, מוניטורינג, אבחון — עלינו; האפליקציה והגדרותיה — עליכם. את הגבול מקבעים במטריצת אחריות ובנוהל אסקלציה.

כיצד אתם בודקים עמידות?

הוצאה לסירוגין של נודים מכלל פעולה, דימוי כשל של אזור, בדיקת מיתוג בעת כשל. התוצר — דוח: זמן שחזור, שיעור מיתוגים מוצלחים, צווארי בקבוק שהתגלו.

נדון במשימה ונחזור עם הערכה ותוכנית עבודה

לאחר הפנייה אנחנו לא שולחים הצעה תבניתית, אלא קודם מנתחים את הנתונים הראשוניים: התשתית הנוכחית, טופולוגיית הרשת, דרישות העמידות ואילו שירותים כבר פועלים בקלאסטרים. בנפרד מחדדים את פרופיל העומס — תקופות שיא, רגישות להשהיות, חלונות תחזוקה מתוכננים.

אם VK Cloud Managed Kubernetes רק מתוכנן, מקבעים את הצמיחה הצפויה ואת נקודות האינטגרציה עם מערכות משיקות.

בהמשך מכינים סכמת פתרון והערכת היקף. ההערכה אינה מנותקת מתוכנית העבודה: אתם רואים מיד אילו שלבים יגיעו, מה יידרש מכם בכל אחד ובאיזה רגע אנחנו מעבירים את הניהול לצוות שלכם.

  • ניתוח הנתונים הראשוניים. שיחה עם המהנדסים שלכם, איסוף דרישות, אבחון הקונפיגורציה והמגבלות הנוכחיות.
  • סכמת הפתרון. הרכב הקלאסטרים ומאגרי הנודים, רשת, איזון עומסים, אחסון, גיבוי, הרשאות.
  • הערכת היקף והרכב העבודה. רשימת משימות, תחומי אחריות מצדנו ומצדכם, מה נכלל בעבודה ומה לא.
  • תוכנית עבודה ולוחות זמנים. שלבים עם תוצרי ביניים, סדר הפריסה, נקודות שבהן אפשר לקבע התקדמות.
  • סדר המסירה. נוהל גישה, סכמת אסקלציה, הליך ביצוע שינויים לאחר ההשקה.
  • תיעוד. סכמות, קונפיגורציות, הוראות לפעולות אופייניות ולשחזור — נשארים אצלכם.

תארו את המשימה בשתיים-שלוש פסקאות — נחזור עם הערכה, הרכב העבודה ותוכנית.