אשכולות של משתמשים ב-Google Distributed Cloud מאפשרים להריץ ולבודד עומסי עבודה בתוך ארכיטקטורה של כמה אשכולות שמנוהלת על ידי אשכול אדמין. הפרדת עומסי העבודה מאשכול האדמין מגינה על נתונים אדמיניסטרטיביים רגישים, כמו מפתחות SSH מאוחסנים, והפרדת אשכולות המשתמשים זה מזה מספקת אבטחה לדיירים מרובים באפליקציות שלכם.
כדי לפרוס אשכול משתמש, מתאימים אישית קובץ תצורה של אשכול כדי להגדיר את מאגרי הצמתים ואת הגדרות האשכול, ואז יוצרים את האשכול באמצעות הפקודה bmctl.
דרישות מוקדמות
- הגרסה האחרונה של
bmctl(gs://anthos-baremetal-release/bmctl/1.36.200-gke.118/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. המינוי האזורי הזה מגביל את תנועת הנתונים של שירות Fleet לאזור שלכם. אם כוללים את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 ...שאר קובצי התצורה של אשכול המשתמשים זהים לקובץ התצורה של אשכול האדמין.
מציינים את צפיפות ה-Pod של צומתי האשכול:
... # 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. אחרי שיוצרים את האשכול, אי אפשר לעדכן את הערך הזה.צפיפות הפודים מוגבלת גם על ידי משאבי ה-IP הזמינים של האשכול. למידע נוסף, קראו את המאמר רשתות של Pods ו-Services.
יצירת אשכול המשתמשים
מריצים את הפקודה 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
בדיקות קדם הפעלה חלות על אשכולות משתמשים שאתם יוצרים באמצעות הפקודה bmctl create cluster.
הגדרות לדוגמה של אשכולות משתמשים
במאמר אשכולות של משתמשים תוכלו לקרוא דוגמאות להגדרות של אשכולות של משתמשים.