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