הגדרת RHEL

כדי להשתמש ב-Google Distributed Cloud, צריך להגדיר את מערכת ההפעלה הבסיסית Red Hat Enterprise Linux (RHEL) במכונות הצומת. כדי להכין את הצמתים לפריסת האשכול, צריך להגדיר את מנהלי החבילות, הפרמטרים של הליבה ושירותי המערכת הנדרשים. לקבלת עזרה בפתרון בעיות, אפשר לעיין בבעיות מוכרות.

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

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

הפעלת cgroupsv2

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

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

הוראות להפעלת cgroupsv2 ב-RHEL מופיעות במאמר הפעלת cgroup v2 במאגר הידע של Red Hat.

אימות גרסת Python

לפני שמפעילים או משדרגים צומת עם תוכנת Google Distributed Cloud רק ל-bare metal בגרסה 1.35 ואילך, מריצים את הפקודה python3 --version כדי לאמת את הגרסה הנוכחית של Python.

אם גרסת Python היא 3.8 או גרסה קודמת, צריך להתקין את Python 3.9 בצומת הזה.

כדי להתקין את Python 3.9 ואילך ולוודא שהצומת מאותחל או מתעדכן כצפוי, מבצעים את הפעולות הבאות:

  1. מתקינים את Python 3.9:

    sudo dnf install -y python39
    
  2. מוודאים שהקובץ של Python 3.9 נמצא בנתיב /usr/bin/python3.9.

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

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

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

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

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

ודאו שיש לכם את שם המשתמש והסיסמה של RedHat, ושיש לכם גישת root למכונות שאתם מגדירים. כדי לאמת את מנהל החבילות:

  1. אם לא רשמתם את מערכת ההפעלה, הירשמו ל-RedHat באמצעות שם המשתמש והסיסמה שלכם ב-RedHat כדי להוריד עדכונים:

    sudo subscription-manager register
    
    sudo subscription-manager refresh
    
    sudo subscription-manager attach --auto
    
  2. חיפוש עדכונים:

    sudo dnf check-update
    

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

    Updating Subscription Management repositories.
    ...
    # Last metadata expiration check: ...
    ...
    

הגדרה או השבתה של firewalld

אפשר להגדיר את Firewalld לשימוש עם Google Distributed Cloud או להשבית אותו. למידע על הגדרת firewalld, ראו הגדרת יציאות firewalld בדף דרישות הרשת.

ההוראות הבאות משביתות את firewalld.

  1. משביתים את firewalld:

    sudo systemctl stop firewalld
    
    sudo systemctl disable firewalld
    
  2. בודקים את הסטטוס של firewalld כדי לוודא שהוא מושבת:

    sudo systemctl status firewalld | grep "Active"
    # Output
    # Active: inactive (dead)
    

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

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

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

    sudo dnf remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine
    
  2. מסירים את podman-manpages:

    sudo dnf remove podman-manpages
    
  3. מתקינים את Docker 20.10.0 ואילך:

    sudo dnf install -y yum-utils
    
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/rhel/docker-ce.repo
    
    sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io
    
    sudo systemctl start docker
    
  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
    
  6. מוודאים ש-Docker פועל:

    docker run hello-world
    

    הפלט אמור להיראות כך:

    Hello from Docker!
    

    ההודעה הזו מראה שההתקנה פועלת כמו שצריך.

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

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

System clock synchronized: yes

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

במכונות שפועלות עם RHEL 9 ו-8.10, מגבלות הליבה של 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. אם עדכנתם את אחד מהערכים, הפעילו מחדש את המחשב.

שיטות מומלצות

כדי לפשט את ההתקנה, מומלץ להגדיר את RHEL באמצעות התקנה מינימלית עם ניהול ללא GUI. בנוסף, חשוב להפעיל את החיבור לרשת ולהשתמש ב-DHCP שמוגדר כברירת מחדל או לספק כתובת IP סטטית תקינה ופרטי רשת. מוודאים שהמכונה יכולה להתחבר למשאבים החיצוניים הנדרשים, כמו cloud.google.com.

אם Docker לא פועל, בודקים אם ה-daemon של Docker פועל באמצעות הפקודה הבאה:

sudo systemctl start docker