כדי להשתמש ב-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)
השבתה של
ufw:sudo ufw disableמוודאים שהאפשרות
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 באופן ידני:
מסירים את כל הגרסאות הקודמות של Docker:
sudo apt-get remove docker docker-engine docker.io containerd runcמעדכנים את הכלי לניהול חבילות:
sudo apt-get updateמתקינים את Docker 20.10.0 ואילך:
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common \ docker.ioמוודאים שפועלת גרסה 20.10.0 ואילך:
sudo docker versionמשווים את הפלט לדוגמה הבאה כדי לוודא שגרסאות הלקוח והשרת הן 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:8192fs.inotify.max_user_watches:524288
כדי לוודא שהערכים האלה מוגדרים בצורה נכונה במכונות הצומת:
בודקים את הערך של
max_user_instances:cat /proc/sys/fs/inotify/max_user_instancesאם צריך, מעדכנים את
max_user_instancesלערך המינימלי:echo 'fs.inotify.max_user_instances=8192' | sudo tee --append /etc/sysctl.confבודקים את הערך של
max_user_watches:cat /proc/sys/fs/inotify/max_user_watchesאם צריך, מעדכנים את
max_user_watchesלערך המינימלי:echo 'fs.inotify.max_user_watches=524288' | sudo tee --append /etc/sysctl.confאם עדכנתם את אחד מהערכים, הפעילו מחדש את המחשב.