בדיקות קדם-הפעלה הן אמצעי מניעתי שעוזר לזהות בעיות לפני שמתחילים פעולה משמעותית באשכול, כמו יצירה או שדרוג של אשכולות. כשהבדיקות האלה מופעלות באופן אוטומטי לפני פעולה, לא מתבצעים שינויים באשכולות אלא אם כל הבדיקות המקדימות עוברות בהצלחה. אפשר גם להריץ בדיקות לפני פרסום לפי דרישה.
במאמר הזה מוסבר על כל בדיקה, באילו נסיבות היא מופעלת אוטומטית, איך ומתי להפעיל אותה באופן ידני ואיך לפרש את התוצאות.
ב-Google Distributed Cloud אפשר להריץ בדיקות לפני ההפעלה במצבים שונים:
Google Distributed Cloud מריץ בדיקות קדם-הפעלה כשיוצרים או משדרגים אשכולות ומשאבי מאגר צמתים באמצעות
bmctl. אם הבדיקות נכשלות, לא מתבצעים שינויים. אפשר גם לדלג על הבדיקות האלה או להריץ אותן באופן מפורש.בנוסף, ב-Google Distributed Cloud מופעלים בדיקות פנימיות לפני הפעלה כשמנהל מערכת או אשכול היברידי יוצרים או מעדכנים משאבי Kubernetes באשכולות משתמשים. הבדיקות מופעלות לפני שהשינויים מוחלים על אשכולות המשתמשים הרלוונטיים. אם הבדיקות נכשלות, לא מתבצעים שינויים.
PreflightCheck משאבים מותאמים אישית
כשמריצים בדיקה מקדימה, Google Distributed Cloud יוצר PreflightCheckמשאב בהתאמה אישית. PreflightCheck משאבים בהתאמה אישית הם קבועים ומספקים תיעוד של הפעילויות והתוצאות של הבדיקה המקדימה.
כדי לאחזר PreflightCheck משאבים בהתאמה אישית:
כדי לקבל רשימה של בדיקות מקדימות שהופעלו באשכול מסוים:
kubectl get preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACEמחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין. -
CLUSTER_NAMESPACE: מרחב השמות של האשכול.
התשובה תפרט את המשאבים לפי מרחב שמות. אפשר להריץ את הפקודה
kubectl get preflightchecksבכל מרחבי השמות כדי לקבל רשימה מקיפה. לכל משאב, התשובה מציגה את גיל המשאב ומציינת אם הבדיקות המקדימות עברו בהצלחה. בדוגמה הבאה של תגובה מוצגים משאביPreflightCheckבמרחב השמותcluster-test-admin001.NAMESPACE NAME PASS AGE cluster-test-admin001 test-admin001 true 52d cluster-test-admin001 test-admin001jkm4q true 52d cluster-test-admin001 test-admin001k79t7 true 6d20h cluster-test-admin001 upgrade-cluster-20231106-222746 true 6d20h-
אחזור הפרטים של
PreflightCheckמשאב מותאם אישית ספציפי:kubectl describe preflightchecks --kubeconfig ADMIN_KUBECONFIG --namespace CLUSTER_NAMESPACEמחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין. -
CLUSTER_NAMESPACE: מרחב השמות של האשכול.
בדוגמה הבאה של תגובת פקודה מוצג משאב
PreflightCheckשל בדיקת קדם-הפעלה מוצלחת שהופעלה כחלק מיצירת אשכול:Name: create-cluster-20230922-175006 Namespace: cluster-test-user001 Labels: <none> Annotations: <none> API Version: baremetal.cluster.gke.io/v1 Kind: PreflightCheck Metadata: Creation Timestamp: 2023-09-22T17:50:11Z Generation: 1 Resource Version: 6502800 UID: 917daf64-963d-44b4-a1f9-c54972a39191 Spec: Check Image Version: latest Config YAML: --- apiVersion: v1 kind: Namespace metadata: name: cluster-test-user --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: test-user001 namespace: cluster-test-user001 spec: type: user profile: default anthosBareMetalVersion: 1.16.0 gkeConnect: projectID: clusters-project controlPlane: nodePoolSpec: nodes: - address: 192.0.2.53 ... --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: cluster-test-user001 spec: clusterName: test-user001 nodes: - address: 192.0.2.54 ... Status: Checks: 192.0.2.53: Job UID: d0b5dc1f-9d39-4cc8-b3d2-0841212f7f8c Message: Pass: true 192.0.2.53-gcp: Job UID: b4d96ce5-0d4e-4e3c-97db-6317e0c15fc8 Message: Pass: true 192.0.2.54: Job UID: b67cf195-3951-46ad-b91c-0d79025cfc0a Message: Pass: true 192.0.2.54-gcp: Job UID: aed509e2-4bf7-44c4-bfa0-8147ef8ea74e Message: Pass: true Gcp: Job UID: ac479ac4-e1c4-4681-9f2b-5773069bf6ae Message: Pass: true Node - Network: Job UID: 8a57c4ee-ad17-4560-8809-b117c871ad5d Message: Pass: true Pod - Cidr: Message: Pass: true Cluster Spec: Anthos Bare Metal Version: 1.16.0 Bypass Preflight Check: false Cluster Network: Bundled Ingress: true Pods: Cidr Blocks: 10.0.0.0/16 Services: Cidr Blocks: 10.96.0.0/20 ... Completion Time: 2023-09-22T17:51:22Z Conditions: Last Transition Time: 2023-10-02T23:59:06Z Observed Generation: 1 Reason: Reconciling Status: True Type: Reconciling Node Pool Specs: node-pool-1: Cluster Name: test-user001 Nodes: Address: 192.0.2.54 ... Pass: true Start Time: 2023-09-22T17:50:32Z Events: <none>במשאב המותאם אישית
PreflightCheckשמוצג למעלה, הקטעStatusמכיל את הפרטים הבאים:- בקטע
Checksמפורטות הבדיקות המקדימות שהופעלו, ומוצגות תוצאות הבדיקה. בדוגמה הזו, הבדיקות הבאות הופעלו:-
192.0.2.53ו-192.0.2.54: בדיקות צמתים (הגדרת מערכת ההפעלה, משאבים והגדרות תוכנה) למכונות עם כתובות IP192.0.2.53ו-192.0.2.54. -
192.0.2.53-gpcו-192.0.2.54-gcp: Google Cloud בדיקות קישוריות (Artifact Registry וגישה ל-Google API) למכונות עם כתובות IP192.0.2.53ו-192.0.2.54. -
Gcp: Google Cloud בדיקות קישוריות לאשכול. -
Node - Network: בדיקות רשת (קישוריות, פעולתetcd, גישה לכתובת IP וירטואלית וקישור יציאות) עבור האשכול. -
Pod - Cidr: בדיקות של כתובות ה-IP של ה-Pod כדי לוודא שאין חפיפה בין הכתובות באשכול.
-
- בקטע
Cluster Specמוצגת הגדרת האשכול. - בשדה
Passמוצג הערךtrue, שמעיד על כך שכל הבדיקות המקדימות עברו בהצלחה.
-
יומנים של בדיקות לפני הפעלה
כשבדיקות קדם-הפעלה מופעלות כתוצאה מפקודת bmctl, כמו bmctl check
preflight, Google Distributed Cloud יוצר קובצי יומן. אלה התוצרים שנוצרים ואיפה:
יומני הבדיקה המקדימה נוצרים בספרייה עם תבנית השמות הבאה
preflight-TIMESTAMP.ספריית הבדיקה המקדימה הזו נוצרת בספרייה
logשל האשכול בסביבת העבודהbmctl. כברירת מחדל, נתיב הספרייהlogהואbmctl-workspace/CLUSTER_NAME/log.יומני הבדיקה המקדימה כוללים את הקבצים הבאים:
קובצי יומן של בדיקות מכונה של צומת, אחד לכל צומת באשכול. השמות של קובצי היומן האלה מבוססים על כתובת ה-IP של הצומת. לדוגמה, שם הקובץ יכול להיות
192.0.2.53.קובצי יומן של Google Cloud בדיקות גישה, אחד לכל צומת באשכול. השמות של קובצי היומן האלה מבוססים על כתובת ה-IP של הצומת. לדוגמה, שם הקובץ יכול להיות
192.0.2.53-gcp.קובץ יומן לביצוע בדיקות גישה לאשכול Google Cloud , שנקרא
gcp.קובץ יומן לבדיקות של רשתות צמתים, שנקרא
node-network.
אם בדיקת קדם-הפעלה נכשלת, קובצי יומן אלה יכולים לעזור לכם לזהות ולפתור את הבעיה.
בדיקות קדם הפעלה ליצירת אשכול
כשיוצרים אשכולות, Google Distributed Cloud מריץ באופן אוטומטי בדיקות לפני שמבצעים שינויים.
מה נבדק?
בדיקות קדם הפעלה להתקנה בודקות את הדברים הבאים:
בדיקות של מכונות הצמתים:
המכונות באשכול משתמשות במערכת הפעלה (OS) נתמכת.
גרסת מערכת ההפעלה נתמכת.
מערכת ההפעלה משתמשת בגרסת ליבה נתמכת.
מכונות הצמתים מוגדרות לשימוש ב-
cgroupsv2. הבדיקה נכשלת אם מזוההcgroupsv1.ב-Ubuntu, חומת האש Uncomplicated Firewall (UFW) מושבתת.
ב-Ubuntu, מנהל החבילות
aptפועל והחבילות הנדרשות זמינות.ב-Red Hat Enterprise Linux, מנהל החבילות
dnfפועל והחבילות הנדרשות זמינות.ב-Red Hat Enterprise Linux, Podman לא מותקן.
מכונות הצומת עומדות בדרישות המינימום של המעבד.
מכונות הצמתים עומדות בדרישות הזיכרון המינימליות.
מכונות הצמתים עומדות בדרישות המינימום של נפח האחסון בדיסק.
סנכרון הזמן מוגדר במכונות הצמתים.
kubeletפעיל ופועל במכונות צמתים.
containerdפעיל ופועל במכונות צמתים.מסלול ברירת המחדל לניתוב מנות לשער ברירת המחדל מופיע בצמתים.
מערכת שמות הדומיינים (DNS) פועלת בצורה תקינה. אם האשכול מוגדר לפעול מאחורי שרת proxy, הבדיקה הזו תדלג עליו.
כתובות ה-CIDR של ה-Pod לא חופפות לכתובות ה-IP של מכונות הצומת.
אם האשכול מוגדר לשימוש במראה של מאגר, אפשר להגיע למראה של המאגר.
Google Cloud בודק כל צומת ואת האשכול:
Artifact Registry,
gcr.io, נבדקת הנגישות. אם האשכול מוגדר לשימוש במאגר תמונות (registry mirror), הבדיקה הזו מדלגת על האשכול.אפשר להגיע אל Google APIs.
בדיקות של רשתות צמתים (משתנות בהתאם להגדרת איזון העומסים):
אפשר לגשת ל-VIP של שרת Kubernetes API.
כתובות ה-VIP של מאזן העומסים נגישות.
הצמתים יכולים לתקשר ביציאות הנדרשות.
הוקצה מופע של
etcdevents ועומדים בדרישות לגבי יציאות.
אם כל הבדיקות עוברות בהצלחה, Google Distributed Cloud יוצר את האשכול. למידע נוסף על הדרישות ליצירת אשכולות, אפשר לעיין במאמר סקירה כללית של התנאים המוקדמים להתקנה.
הרצת בדיקות קדם הפעלה לפי דרישה ליצירת אשכול
אפשר גם להריץ בדיקות קדם-הפעלה באופן עצמאי, לפני שיוצרים אשכול. כדאי לעשות את זה כי פעולות מרכזיות באשכול, כמו יצירת אשכול, צורכות זמן רב. זיהוי ופתרון בעיות בנפרד לפני התחלת פעולה מרכזית באשכול יכולים לעזור בתזמון.
אשכולות בניהול עצמי
הפקודה הבאה מאמתת את קובץ התצורה של האשכול שצוין, אבל לא מנסה ליצור את האשכול עצמו:
bmctl check config --cluster CLUSTER_NAMEמחליפים את
CLUSTER_NAMEבשם האשכול שמשויך לקובץ התצורה שבודקים.הפקודה הזו בודקת אם המכונות והרשת מוכנות ליצירת אשכול:
bmctl check preflight --cluster CLUSTER_NAMEמחליפים את
CLUSTER_NAMEבשם האשכול שרוצים לבדוק.
אשכולות משתמשים
הפקודה הבאה מאמתת את קובץ התצורה של האשכול שצוין, אבל לא מנסה ליצור את האשכול עצמו:
bmctl check config --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIGמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול המשתמשים שבודקים. -
ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין המשויך.
-
הפקודה הבאה בודקת אם המכונות והרשת מוכנות ליצירת אשכול:
bmctl check preflight --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
bmctl תומך בשימוש ב---kubeconfig ככינוי לדגל --admin-kubeconfig.
בדיקות לפני שדרוג האשכול
כשמשדרגים אשכולות, Google Distributed Cloud מריץ באופן אוטומטי בדיקות מקדימות לפני ביצוע שינויים.
מה נבדק?
בדיקות קדם הפעלה לשדרוג אשכולות בודקות את הדברים הבאים:
בדיקות של מכונות הצמתים:
המכונות באשכול משתמשות במערכת הפעלה (OS) נתמכת.
גרסת מערכת ההפעלה נתמכת.
מערכת ההפעלה משתמשת בגרסת ליבה נתמכת.
מכונות הצומת מוגדרות לשימוש ב-
cgroupsv2. הבדיקה נכשלת אם מזוההcgroupsv1.ב-Ubuntu, חומת האש Uncomplicated Firewall (UFW) מושבתת.
מכונות הצומת עומדות בדרישות המינימום של המעבד.
במכונות הצמתים יש יותר מ-20% ממשאבי ה-CPU שזמינים.
מכונות הצמתים עומדות בדרישות הזיכרון המינימליות.
מכונות הצמתים עומדות בדרישות המינימום של נפח האחסון בדיסק.
סנכרון הזמן מוגדר במכונות הצמתים.
מסלול ברירת המחדל לניתוב מנות לשער ברירת המחדל מופיע בצמתים.
מערכת שמות הדומיינים (DNS) פועלת בצורה תקינה. אם האשכול מוגדר לפעול מאחורי שרת proxy, הבדיקה הזו תדלג עליו.
אם האשכול מוגדר להשתמש בשיקוף של מאגר, אפשר להגיע לשיקוף של המאגר.
- אף צומת של מישור הבקרה או של איזון העומסים לא נמצא במצב תחזוקה.
Google Cloud בודק כל צומת ואת האשכול:
Artifact Registry,
gcr.io, נבדקת הנגישות. אם האשכול מוגדר לשימוש במאגר תמונות (registry mirror), הבדיקה הזו מדלגת על האשכול.אפשר להגיע אל Google APIs.
בדיקות מחשב:
kubeletפעיל ופועל במכונות צמתים.
containerdפעיל ופועל במכונות צמתים.הסטטוס של נקודת הקצה של תקינות ממשק הרשת של הקונטיינר (CNI) הוא תקין.
כתובות ה-CIDR של ה-Pod לא חופפות לכתובות ה-IP של מכונות הצומת.
- התוקף של האישורים של
kubeadmלא פג.
בדיקות של רשתות צמתים (משתנות בהתאם להגדרת איזון העומסים):
אפשר לגשת ל-VIP של שרת Kubernetes API.
כתובות ה-VIP של מאזן העומסים נגישות.
הצמתים יכולים לתקשר ביציאות הנדרשות.
הוקצה מופע של
etcdevents ועומדים בדרישות לגבי יציאות.
אם כל הבדיקות עוברות בהצלחה, Google Distributed Cloud משדרג את האשכול. מידע נוסף על שדרוג אשכולות זמין במאמרים שיטות מומלצות לשדרוג אשכולות ב-Google Distributed Cloud ומחזור החיים והשלבים של שדרוג אשכולות.
הרצת בדיקות לפני ההטמעה של שדרוגי אשכולות לפי דרישה
הפקודה bmctl check preflight מאפשרת להריץ בדיקה מקדימה לפני שמשדרגים את האשכול. כדי לבדוק אם האשכולות מוכנים לשדרוג, מריצים את פקודת הבדיקה המקדימה הבאה לפני שמתחילים את השדרוג:
מעדכנים את גרסת האשכול (
anthosBareMetalVersion) בקובץ התצורה של האשכול.כדי לבדוק אם האשכולות מוכנים לשדרוג ולהריץ בדיקה לפני ההפעלה, משתמשים בפקודה הבאה:
bmctl check preflight --cluster CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIGמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול שרוצים לשדרג. -
ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.
כשיוצרים את בדיקת הטרום-השקה באמצעות הפקודה הזו כדי לבדוק שדרוג של אשכול, נוצר משאב מותאם אישית
PreflightCheckבאשכול האדמין.-
בדיקות פנימיות לפני הפעלה באשכולות קיימים
Google Distributed Cloud מבצעת בדיקות פנימיות לפני ההפעלה באופן אוטומטי כשמחילים משאבי Kubernetes על אשכול קיים. אם אחד מהבדיקות נכשל, Google Distributed Cloud לא משנה אף אחד מהצמתים הקשורים, אלא אם עוקפים את הבדיקות באופן מפורש.
דילוג על בדיקות קדם הפעלה כשמחילים משאבי Kubernetes
כדי להתעלם מבדיקות קדם-הפעלה פנימיות כשמחילים משאבים על אשכולות קיימים, צריך להגדיר את השדה BypassPreflightCheck לערך true בקובץ התצורה של האשכול.
הנה חלק מקובץ הגדרות של אשכול שבו השדה bypassPreflightCheck מוגדר לערך true:
apiVersion: v1
kind: Namespace
metadata:
name: cluster-user1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: user1
namespace: cluster-user1
spec:
type: user
bypassPreflightCheck: true
# Anthos cluster version.
anthosBareMetalVersion: 1.35.100
...
הרצת הבדיקות העדכניות לפני ההטמעה
הבדיקות המקדימות (ובדיקות התקינות) מתעדכנות ככל שמזוהות בעיות ידועות.
כדי להנחות את bmctl להריץ את הבדיקות מתמונת הטלאי האחרונה של
הגרסה המשנית המותקנת, משתמשים בדגל האפשרויות --check-image-version latest:
bmctl check preflight --cluster CLUSTER_NAME --check-image-version latest
מחליפים את CLUSTER_NAME בשם האשכול שרוצים לבדוק.
כך תוכלו לזהות בעיות ידועות שזוהו לאחרונה בלי ליצור או לשדרג את האשכול קודם.
אפשר גם לבצע את בדיקות התקינות העדכניות של אשכול פעיל כדי לקבוע אם הוא פועל בצורה תקינה. מידע נוסף זמין במאמר הפעלת בדיקות התקינות העדכניות.
התעלמות מתוצאות של בדיקות אוטומטיות לפני טיסה
אם מריצים בדיקות לפני ההטמעה לפי דרישה לפני שיוצרים או משדרגים אשכולות, אפשר לדלג על הבדיקות האוטומטיות לפני ההטמעה. כדי לדלג על בדיקות אוטומטיות לפני ההמראה, משתמשים בדגל האופציונלי --force כשמריצים את הפקודה bmctl create cluster או bmctl upgrade cluster.