ב-Google Distributed Cloud, אשכולות משתמשים מריצים את עומסי העבודה, ובארכיטקטורה של כמה אשכולות, אשכולות משתמשים נוצרים ומנוהלים על ידי אשכול אדמין.
אחרי שיוצרים אשכול אדמין, הפעלת הפקודה bmctl create config יוצרת קובץ YAML שאפשר לערוך כדי להגדיר את אשכול המשתמשים. כדי להחיל את ההגדרה וליצור את אשכול המשתמשים, משתמשים בפקודה bmctl create cluster. בדיקות קדם-הפעלה רלוונטיות לאשכולות משתמשים שנוצרו באמצעות הפקודה bmctl create cluster.
העברת עומסי עבודה מאשכול האדמין מגנה על נתונים אדמיניסטרטיביים רגישים, כמו מפתחות SSH שמאוחסנים באשכול האדמין, מפני אנשים שלא צריכים גישה למידע הזה. בנוסף, הפרדה בין אשכולות משתמשים מספקת אבטחה כללית טובה לעומסי העבודה.
דרישות מוקדמות
- הגרסה האחרונה של
bmctlמורדת (gs://anthos-baremetal-release/bmctl/1.34.100-gke.93/linux-amd64/bmctl) מ-Cloud Storage. - אשכול ניהול פעיל עם גישה לשרת ה-API של האשכול (
controlPlaneVIP). - לצמתים של אשכול האדמין יש קישוריות רשת לכל הצמתים באשכול המשתמשים של היעד.
- תחנת עבודה שמופעלת בה
bmctlכוללת קישוריות לרשת לכל הצמתים באשכולות המשתמשים של היעד. - תחנת העבודה של האדמין יכולה ליצור חיבור SSH לכל אחד מצמתי אשכול המשתמשים.
- חשבון השירות Connect-register מוגדר באשכול האדמין לשימוש ב-Connect.
הפעלת SELinux
אם רוצים להפעיל את SELinux כדי לאבטח את הקונטיינרים, צריך לוודא ש-SELinux מופעל במצב Enforced בכל המכונות המארחות. החל מגרסה 1.9.0 ואילך של Google Distributed Cloud, אפשר להפעיל או להשבית את SELinux לפני או אחרי יצירת אשכולות או שדרוגים של אשכולות. SELinux מופעל כברירת מחדל ב-Red Hat Enterprise Linux (RHEL). אם SELinux מושבת במכונות המארחות שלכם או שאתם לא בטוחים, תוכלו לקרוא את המאמר אבטחת הקונטיינרים באמצעות SELinux כדי לקבל הוראות להפעלה שלו.
Google Distributed Cloud תומך ב-SELinux רק במערכות RHEL.
יצירת קובץ תצורה של אשכול משתמשים
קובץ התצורה ליצירת אשכול משתמשים כמעט זהה לקובץ שמשמש ליצירת אשכול אדמינים. ההבדל היחיד הוא שצריך להסיר את הקטע של הגדרת פרטי הכניסה המקומיים כדי שההגדרה תהיה אוסף תקין של משאבי Kubernetes. קטע ההגדרה נמצא בחלק העליון של הקובץ, בקטע bmctl configuration variables. דוגמאות להגדרות של אשכולות משתמשים מופיעות במאמר אשכולות משתמשים בדוגמאות להגדרת אשכולות.
כברירת מחדל, אשכולות משתמשים מקבלים בירושה את פרטי הכניסה שלהם מאשכול האדמין שמנהל אותם. אתם יכולים לשנות חלק מהפרטים האלה או את כולם.
יוצרים קובץ תצורה של אשכול משתמשים באמצעות הפקודה
bmctl create config:bmctl create config -c USER_CLUSTER_NAMEלדוגמה, מריצים את הפקודה הבאה כדי ליצור קובץ תצורה לאשכול משתמשים בשם
user1:bmctl create config -c user1הקובץ נכתב בנתיב
bmctl-workspace/user1/user1.yaml. הנתיב הגנרי לקובץ הואbmctl-workspace/CLUSTER NAME/CLUSTER_NAME.yaml.עורכים את קובץ התצורה עם השינויים הבאים:
מסירים את הנתיבים של קובץ פרטי הכניסה המקומי מההגדרה:
...gcrKeyPath: (path to Artifact Registry service account key)sshPrivateKeyPath: (path to SSH private key, used for node access)gkeConnectAgentServiceAccountKeyPath: (path to Connect agent service account key)gkeConnectRegisterServiceAccountKeyPath: (path to Hub registration service account key)cloudOperationsServiceAccountKeyPath: (path to Cloud Operations service account key)...משנים את ההגדרה כך שמציינים סוג אשכול של
userבמקוםadmin:... spec: # Cluster type. This can be: # 1) admin: to create an admin cluster. This can later be used to create # user clusters. # 2) user: to create a user cluster. Requires an existing admin cluster. # 3) hybrid: to create a hybrid cluster that runs admin cluster # components and user workloads. # 4) standalone: to create a cluster that manages itself, runs user # workloads, but does not manage other clusters. type: user ...כדי לרשום את האשכולות ל-Fleet, מציינים את מזהה הפרויקט בשדה
gkeConnect.projectID. הפרויקט הזה נקרא פרויקט המארח של ה-Fleet.... gkeConnect: projectID: my-project-123 ...- אפשר גם להוסיף את הדגל
gkeConnect.locationלמפרט האשכול כדי לציין את האזור Google Cloud שבו פועלים שירותי Fleet ו-Connect. חברות אזורית כזו מגבילה את התנועה של שירותי צי הרכב לאזור שלכם. אם כוללים אתgkeConnect.locationבמפרט האשכול, האזור שמציינים צריך להיות זהה לאזור שהוגדר ב-clusterOperations.location. אם האזורים לא זהים, יצירת האשכול תיכשל.
- אפשר גם להוסיף את הדגל
אם GKE On-Prem API מופעל בפרויקטGoogle Cloud , כל האשכולות בפרויקט נרשמים ל-GKE On-Prem API באופן אוטומטי באזור שהוגדר ב-
clusterOperations.location.אם רוצים לרשום את כל האשכולות בפרויקט ל-GKE On-Prem API, צריך לבצע את השלבים שבקטע לפני שמתחילים כדי להפעיל את GKE On-Prem API בפרויקט ולהשתמש בו.
אם לא רוצים לרשום את האשכול ל-GKE On-Prem API, צריך לכלול את הקטע הזה ולהגדיר את
gkeOnPremAPI.enabledל-false. אם לא רוצים לרשום אף אשכול בפרויקט, צריך להשבית אתgkeonprem.googleapis.com(שם השירות של GKE On-Prem API) בפרויקט. הוראות מפורטות מופיעות במאמר השבתת שירותים.
מציינים את כתובת ה-IP של צומת מישור הבקרה.
... # Sample control plane config controlPlane: nodePoolSpec: nodes: - address: 10.200.0.20 ...מוודאים שהמפרטים של אדמין ושל אשכול משתמשים עבור כתובות ה-VIP של מאזן העומסים ומאגרי הכתובות משלימים זה את זה, ולא חופפים לאשכולות קיימים. בדוגמה הבאה מוצג זוג לדוגמה של הגדרות של אשכול אדמין ואשכול משתמש, עם איזון עומסים ומאגרי כתובות:
... # Sample admin cluster config for load balancer and address pools loadBalancer: vips: controlPlaneVIP: 10.200.0.49 ingressVIP: 10.200.0.50 addressPools: - name: pool1 addresses: - 10.200.0.50-10.200.0.70 ... ... # Sample user cluster config for load balancer and address pools loadBalancer: vips: controlPlaneVIP: 10.200.0.71 ingressVIP: 10.200.0.72 addressPools: - name: pool1 addresses: - 10.200.0.72-10.200.0.90 ...שאר קובצי ההגדרות של אשכול המשתמשים זהים לקובץ ההגדרות של אשכול האדמין.
מציינים את צפיפות ה-Pods של צמתי האשכול:
... # NodeConfig specifies the configuration that applies to all nodes in the cluster. nodeConfig: # podDensity specifies the pod density configuration. podDensity: # maxPodsPerNode specifies at most how many pods can be run on a single node. maxPodsPerNode: 110 ...במקרה של אשכולות משתמשים, הערכים המותרים לפרמטר
maxPodsPerNodeהם32-250. ערך ברירת המחדל אם לא צוין הוא110. אחרי שיוצרים את האשכול, אי אפשר לעדכן את הערך הזה.צפיפות ה-Pods מוגבלת גם על ידי משאבי ה-IP הזמינים של האשכול. לפרטים נוספים, אפשר לעיין במאמר בנושא רשתות Pod.
יצירת אשכול המשתמשים
מריצים את הפקודה bmctl כדי להחיל את ההגדרה של אשכול המשתמשים וליצור את האשכול:
bmctl create cluster -c USER_CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
מחליפים את מה שכתוב בשדות הבאים:
-
USER_CLUSTER_NAME: שם האשכול שנוצר בקטע הקודם. -
ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.
לדוגמה, אם שם אשכול המשתמשים הוא user1 וקובץ ה-kubeconfig של אשכול האדמין נמצא בנתיב kubeconfig bmctl-workspace/admin/admin-kubeconfig, הפקודה תהיה:
bmctl create cluster -c user1 --kubeconfig bmctl-workspace/admin/admin-kubeconfig
דוגמאות להגדרות של אשכול משתמשים
דוגמאות להגדרות של אשכולות משתמשים מופיעות במאמר אשכולות משתמשים בדוגמאות להגדרות של אשכולות.