הגדרת Ubuntu

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

לפני שמתחילים

ודאו שאתם משתמשים בגרסה נתמכת של מערכת ההפעלה ובקרנל של Ubuntu Hardware Enablement‏ (HWE). לרשימת הגרסאות הנתמכות, ראו בחירת מערכת ההפעלה.

הפעלת cgroupsv2

בגרסה 1.35 ואילך של Google Distributed Cloud לשרת פיזי, צריך את cgroupsv2. כדי לשדרג או ליצור אשכולות, מערכת ההפעלה צריכה לתמוך ב-cgroupsv2.

ב-Google Distributed Cloud אי אפשר ליצור או לשדרג אשכולות אם cgroupsv1 מזוהה במהלך בדיקות טרום-הפעלה. הוראות להעברת מערכת ההפעלה ל-cgroupsv2 מפורטות במאמר העברה ל-cgroup v2 במסמכי התיעוד של Kubernetes.

הפעלת מהדר BPF Just In Time

בליבה של מערכת ההפעלה, צריך להפעיל את האפשרות של מהדר BPF Just In Time‏ (CONFIG_BPF_JIT=y).

  • כדי לבדוק אם האפשרות הזו מופעלת, מריצים את הפקודה הבאה:

    grep CONFIG_BPF_JIT /boot/config-$(uname -r)
    

אימות מנהל החבילות

  • כדי לוודא שמנהל החבילות פועל כמו שצריך, משתמשים בפקודה הבאה:

    sudo apt-get check
    

    הפלט לא אמור להציג שגיאות, והוא אמור להיראות כמו בדוגמה הבאה:

    # Reading package lists... Done
    # Building dependency tree
    # Reading state information... Done
    

השבתת Uncomplicated Firewall‏ (UFW)

  1. השבתה של ufw:

    sudo ufw disable
    
  2. מוודאים שהאפשרות ufw מושבתת:

    sudo ufw status
    # Status: inactive
    

הגדרת Docker בתחנת העבודה

‫Google Distributed Cloud עוזר להתקין את Docker במכונות ללא מערכת הפעלה בתרחישים הבאים:

  • אם Docker לא מותקן במכונות ללא מערכת הפעלה, bmctl מתקין את גרסה 20.10.0 ואילך.
  • אם במכונות הפיזיות מותקנת גרסה 19.03.5 או גרסה קודמת של Docker, הפקודה bmctl משדרגת את Docker לגרסה 20.10.0 ואילך.

כדי להתקין את Docker באופן ידני:

  1. מסירים את כל הגרסאות הקודמות של Docker:

    sudo apt-get remove docker docker-engine docker.io containerd runc
    
  2. מעדכנים את הכלי לניהול חבילות:

    sudo apt-get update
    
  3. מתקינים את Docker 20.10.0 ואילך:

    sudo apt-get install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \
      software-properties-common \
      docker.io
    
  4. מוודאים שפועלת גרסה 20.10.0 ואילך:

    sudo docker version
    
  5. משווים את הפלט לדוגמה הבאה כדי לוודא שגרסאות הלקוח והשרת הן 20.10.0 ואילך :

     Client: Docker Engine - Community
     Version:           25.0.3
     ...
     Server: Docker Engine - Community
      Engine:
      Version:          25.0.3
    

הגדרת סנכרון זמן

סנכרון הזמן כולל הגדרה של השעונים במכונות הצומת, באמצעות קובץ עזר חיצוני ייעודי לזמן. סנכרון הזמן חשוב לפעילויות באשכול שרגישות לזמן, כמו רישום אירועים ביומן ואיסוף מדדים. הקרנל של מכונת הצומת שולט בשעון בקונטיינרים שפועלים בצומת. כדי לוודא שהזמן מסונכרן כמו שצריך, מתקינים במכונות שירות של פרוטוקול זמן רשת (NTP) באמצעות אחד מהשירותים הזמינים: chrony,‏ systemd-timesyncd,‏ ntp או ntpdate. מריצים את הפקודה timedatectl כדי לוודא ששעון המערכת מסונכרן. הפלט של timedatectl צריך לכלול את הסטטוס הבא:

System clock synchronized: yes

צריך לוודא שהמגבלות של ליבת Linux inotify שוות למינימום או גבוהות ממנו

במכונות עם Ubuntu 22.04, המגבלות של ליבת Linux inotify למספר המקסימלי של מופעי משתמשים וצפיות של משתמשים צריכות להיות גדולות או שוות לערכים הבאים:

  • fs.inotify.max_user_instances: 8192
  • fs.inotify.max_user_watches: 524288

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

  1. בודקים את הערך של max_user_instances:

    cat /proc/sys/fs/inotify/max_user_instances
    
  2. אם צריך, מעדכנים את max_user_instances לערך המינימלי:

    echo 'fs.inotify.max_user_instances=8192' | sudo tee --append /etc/sysctl.conf
    
  3. בודקים את הערך של max_user_watches:

    cat /proc/sys/fs/inotify/max_user_watches
    
  4. אם צריך, מעדכנים את max_user_watches לערך המינימלי:

    echo 'fs.inotify.max_user_watches=524288' | sudo tee --append /etc/sysctl.conf
    
  5. אם עדכנתם את אחד מהערכים, הפעילו מחדש את המחשב.