זהו החלק השני במדריך שמסביר איך להתקין את Google Distributed Cloud בהתקנה קטנה להוכחת היתכנות. החלק הראשון הוא Set up minimal infrastructure (הגדרת תשתית מינימלית), שבו מוסבר איך לתכנן את כתובות ה-IP ולהגדיר את התשתית הנדרשת של vSphere ו- Google Cloud לפריסה. המסמך הזה מבוסס על ההגדרה והתכנון שביצעתם בקטע הקודם, ומראה לכם איך ליצור תחנת עבודה למנהלים, אשכול אדמין ואשכול משתמשים בסביבת vSphere, באמצעות תבניות שאפשר למלא כאן במסמך הזה. אחר כך אפשר לפרוס אפליקציה.
כמו בהגדרת התשתית של ההתקנה הבסיסית הזו, יכול להיות שהאשכולות שתגדירו באמצעות המסמך הזה לא יתאימו לצרכים ולתרחישי השימוש בפועל שלכם. מידע נוסף, שיטות מומלצות והוראות להתקנות בייצור זמינים במדריכי ההתקנה.
בגרסה 1.33 ואילך, כל האשכולות החדשים נוצרים כאשכולות מתקדמים. חשוב לעיין במאמרים הבדלים בהפעלת אשכולות מתקדמים והבדלים ביצירה ובשדרוג של אשכולות.
לפני שמתחילים
חשוב לוודא שהגדרתם את סביבות vSphere ו- Google Cloud כמו שמתואר במאמר הגדרת תשתית מינימלית.
אם רוצים להשתמש ב-Terraform כדי ליצור את אשכול המשתמשים, צריך להתקין את Terraform בתחנת העבודה של האדמין או במחשב אחר.
סקירה כללית של התהליך
אלה השלבים העיקריים שנדרשים להגדרה הזו:
מתחברים ל-Google Cloud CLI באמצעות חשבון שיש לו את ההרשאות הנדרשות ליצירת חשבונות שירות.
אוספים את המידע שנדרש להגדרת Google Distributed Cloud, כולל שם המשתמש והסיסמה של vCenter וכתובות ה-IP שהכנתם בקטע הקודם.
יוצרים תחנת עבודה לאדמין עם המשאבים והכלים שצריך כדי ליצור אשכולות של אדמינים ומשתמשים, כולל חשבונות השירות הנוספים שנדרשים להשלמת ההגדרה.
יוצרים אשכול אדמין כדי לנהל ולעדכן את אשכול המשתמשים.
יוצרים אשכול משתמשים כדי להריץ את עומסי העבודה.
1. כניסה ל-Google Cloud CLI
כדי להגדיר את Google Distributed Cloud, צריך כמה חשבונות שירות עם הרשאות שונות. לכן, כדי לבצע את ההגדרה הזו, צריך להתחבר ל-Google Cloud CLI באמצעות חשבון שיש לו את ההרשאות הנדרשות ליצירה ולהגדרה של חשבונות שירות, כי gkeadm משתמש במאפיין הנוכחי של account ב-CLI של gcloud.
מתחברים ל-CLI של gcloud. אפשר להשתמש בכל חשבון Google, אבל צריכות להיות לו ההרשאות הנדרשות. אם פעלתם לפי החלק הקודם במדריך הזה, סביר להניח שכבר התחברתם באמצעות חשבון מתאים כדי ליצור את חשבון השירות של רכיב הגישה.
gcloud auth login
מוודאים שהמאפיין
accountשל ה-CLI של gcloud מוגדר בצורה נכונה:gcloud config list
בפלט מוצג הערך של הנכס
accountשל ערכת ה-SDK. לדוגמה:[core] account = my-name@google.com disable_usage_reporting = False Your active configuration is: [default]
מוודאים שהרכיבים העדכניים של ה-CLI של gcloud מותקנים:
gcloud components updateיכול להיות שתראו את ההודעה הבאה, בהתאם לשיטה שבה התקנתם את ה-CLI של gcloud: "אין לך אפשרות לבצע את הפעולה הזו כי מנהל הרכיבים של ה-CLI של gcloud מושבת בהתקנה הזו. כדי להשיג את אותה התוצאה בהתקנה הזו, אפשר להריץ את הפקודה הבאה:" צריך לפעול לפי ההוראות כדי להעתיק ולהדביק את הפקודה לעדכון הרכיבים.
2. איסוף מידע
משתמשים במידע שהכנתם בשלב הגדרת תשתית מינימלית כדי לערוך את ה-placeholders בטבלה הבאה:
| פרטי vSphere | |
|---|---|
| שם המשתמש בחשבון vCenter | USERNAME |
| הסיסמה לחשבון vCenter | PASSWORD |
| הכתובת של vCenter Server | ADDRESS |
| הנתיב אל אישור ה-CA הבסיסי של vCenter Server, במחשב שבו תשתמשו כדי ליצור את תחנת העבודה של האדמין | CA_CERT_PATH |
| השם של מרכז הנתונים של vSphere | DATA_CENTER |
| השם של אשכול vSphere | VSPHERE_CLUSTER |
| השם או הנתיב של מאגר משאבים ב-vSphere. מידע נוסף זמין במאמר vcenter.resourcePool. | RESOURCE_POOL |
| השם של מאגר הנתונים של vSphere | DATASTORE |
| השם של רשת vSphere | NETWORK |
| כתובות IP | |
| כתובת IP אחת לתחנת העבודה של האדמין | ADMIN_WS_IP |
| שלוש כתובות IP לצמתים של מישור הבקרה של אשכול האדמין. |
ADMIN_CONTROL_PLANE_NODE_IP_1 ADMIN_CONTROL_PLANE_NODE_IP_2 ADMIN_CONTROL_PLANE_NODE_IP_3 |
| כתובת IP לצומת של מישור הבקרה באשכול המשתמשים. |
USER_CONTROL_PLANE_NODE_IP |
| ארבע כתובות IP לצמתי העובדים של אשכול המשתמשים. הכתובת הזו כוללת צומת נוסף שאפשר להשתמש בו במהלך שדרוג ועדכון. |
USER_NODE_IP_1 USER_NODE_IP_2 USER_NODE_IP_3 USER_NODE_IP_4 |
| כתובת IP וירטואלית (VIP) לשרת ה-API של Kubernetes באשכול האדמין | ADMIN_CONTROL_PLANE_VIP |
| כתובת VIP לשרת Kubernetes API של אשכול המשתמשים | USER_CONTROL_PLANE_VIP |
| כתובת IP וירטואלית (VIP) של Ingress לאשכול המשתמשים | USER_INGRESS_VIP |
| שני כתובות VIP לשירותים מסוג LoadBalancer באשכול המשתמשים. |
SERVICE_VIP_1 SERVICE_VIP_2 |
| כתובת ה-IP של שרת DNS שאפשר להגיע אליו מתחנת העבודה של האדמין ומצמתי האשכול | DNS_SERVER_IP |
| כתובת ה-IP של שרת NTP שאפשר להגיע אליו מתחנת העבודה של האדמין ומצמתי האשכול | NTP_SERVER_IP |
| כתובת ה-IP של שער ברירת המחדל של רשת המשנה שכוללת את תחנת העבודה של האדמין ואת צמתי האשכול | DEFAULT_GATEWAY_IP |
| מסיכת הרשת של רשת המשנה שכוללת את תחנת העבודה של האדמין ואת הצמתים של האשכול דוגמה: 255.255.255.0 |
NETMASK |
| אם הרשת שלכם נמצאת מאחורי שרת proxy, כתובת ה-URL של שרת ה-proxy. מידע נוסף זמין במאמר בנושא proxy. אם צריך, ממלאים את הפרטים האלה באופן ידני בקובץ התצורה של תחנת העבודה של האדמין. | PROXY_URL |
| טווחים של CIDR לשירותים ולקבוצות Pod | |
| לכל אחד מהאשכולות של האדמין והמשתמשים צריך להיות טווח CIDR לשירותים וטווח CIDR ל-Pods. אפשר להשתמש בערכים הבאים שמוגדרים מראש, אלא אם צריך לשנות אותם כדי למנוע חפיפה עם רכיבים אחרים ברשת: | |
| טווח CIDR לשירותים באשכול האדמין | 10.96.232.0/24 |
| טווח CIDR ל-Pods באשכול האדמין | 192.168.0.0/16 |
| טווח CIDR לשירותים באשכול המשתמשים | 10.96.0.0/20 |
| טווח CIDR של ה-Pods באשכול המשתמשים | 192.168.0.0/16 |
| Google Cloud פרטים | |
| המזהה של פרויקט בענן שבחרתם | PROJECT_ID |
| הנתיב לקובץ מפתח ה-JSON של חשבון השירות לגישת רכיבים שהגדרתם בקטע הקודם, במחשב שבו תשתמשו כדי ליצור את תחנת העבודה של האדמין. | COMPONENT_ACCESS_SA_KEY_PATH |
כתובת האימייל שמשויכת לחשבון Google Cloud
שלך. לדוגמה: alex@example.com. |
GOOGLE_ACCOUNT_EMAIL |
3. יצירת תחנת עבודה לאדמין
כדי ליצור אשכולות, צריך קודם ליצור תחנת עבודה למנהל ואז להתחבר אליה באמצעות SSH. תחנת העבודה של האדמין היא מכונה וירטואלית עצמאית עם הכלים והמשאבים שצריך כדי ליצור אשכולות של Google Distributed Cloud בסביבת vSphere. משתמשים בכלי gkeadm של שורת הפקודה כדי ליצור את תחנת העבודה של האדמין.
הורדת gkeadm
מורידים את gkeadm לספרייה הנוכחית:
gcloud storage cp gs://gke-on-prem-release/gkeadm/1.34.100-gke.93/linux/gkeadm ./ chmod +x gkeadm
כדי ליצור את קובצי ההגדרות של האדמין ושל אשכול המשתמשים, צריך להשתמש בגרסה gkeadm (שהיא גם הגרסה של Google Distributed Cloud). כדי לבדוק את הגרסה של gkeadm, מריצים את הפקודה הבאה:
./gkeadm version
בדוגמה הבאה של פלט מוצגת הגרסה.
gkeadm 1.34.100 (1.34.100-gke.93)
אפשר להוריד גרסה אחרת של gkeadm, אבל במדריך הזה אנחנו מניחים שאתם מתקינים את גרסה 1.34.100-gke.93, ומשתמשים בגרסה הזו בכל קובצי ההגדרות והפקודות.
יצירת קובץ פרטי הכניסה
יוצרים ושומרים קובץ בשם credential.yaml בספרייה הנוכחית עם התוכן הבא:
apiVersion: v1 kind: CredentialFile items: - name: vCenter username: "USERNAME" password: "PASSWORD"
יצירת קובץ התצורה של תחנת העבודה של האדמין
יוצרים ושומרים קובץ בשם admin-ws-config.yaml, שוב בתיקייה הנוכחית, עם התוכן הבא:
gcp:
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH"
vCenter:
credentials:
address: "ADDRESS"
fileRef:
path: "credential.yaml"
entry: "vCenter"
datacenter: "DATA_CENTER"
datastore: "DATASTORE"
cluster: "VSPHERE_CLUSTER"
network: "NETWORK"
resourcePool: "RESOURCE_POOL"
caCertPath: "CA_CERT_PATH"
proxyUrl: ""
adminWorkstation:
name: "minimal-installation-admin-workstation"
cpus: 4
memoryMB: 8192
diskGB: 100
dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk
dataDiskMB: 512
network:
ipAllocationMode: "static"
hostConfig:
ip: "ADMIN_WS_IP"
gateway: "DEFAULT_GATEWAY_IP"
netmask: "NETMASK"
dns:
- "DNS_SERVER_IP"
proxyUrl: ""
ntpServer: ntp.ubuntu.com
יצירת תחנת עבודה לאדמין
יוצרים את תחנת העבודה של האדמין באמצעות הפקודה הבאה:
./gkeadm create admin-workstation --auto-create-service-accounts
מריצים את הפקודה הבאה:
- יצירת תחנת העבודה לאדמין
- יצירה אוטומטית של חשבונות שירות נוספים שנדרשים להתקנה
- יוצר קובצי תצורה של תבניות לאשכולות של אדמינים ומשתמשים
הפלט מספק מידע מפורט על יצירת תחנת העבודה של האדמין, וכולל פקודה שאפשר להשתמש בה כדי ליצור חיבור SSH לתחנת העבודה של האדמין. לדוגמה:
... Admin workstation is ready to use. Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation This file is required for future upgrades SSH into the admin workstation with the following command: ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49 ********************************************************************
בפלט שלמעלה, כתובת ה-IP היא דוגמה. כתובת ה-IP של תחנת העבודה של האדמין תהיה שונה. חשוב לשים לב לכתובת ה-IP של תחנת העבודה של האדמין. תצטרכו אותו בשלב הבא.
מידע מפורט יותר על יצירת תחנת עבודה לאדמין זמין במאמר יצירת תחנת עבודה לאדמין.
חיבור לתחנת העבודה של האדמין
משתמשים בפקודה שמוצגת בפלט הקודם כדי ליצור חיבור SSH לתחנת העבודה של האדמין. לדוגמה:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
אם תצטרכו למצוא את הפקודה הזו שוב, gkeadm יוצר קובץ בשם gke-admin-ws-... בספרייה במחשב המקומי שבה הפעלתם את gkeadm create admin-workstation.
הוא כולל פרטים על תחנת העבודה של האדמין, כולל פקודת ה-SSH.
בתחנת העבודה של האדמין, מזינים exit כדי לסיים את חיבור ה-SSH ולחזור למכונה המקומית.
מעתיקים את מפתח יומן הביקורת לתחנת העבודה של האדמין
בקטע הקודם יצרתם קובץ מפתח JSON עבור חשבון השירות שלכם לרישום ביומן ביקורת.
מעתיקים את קובץ מפתח ה-JSON לספריית הבית בתחנת העבודה של האדמין. לדוגמה, במחשב המקומי:
scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~
הצגת קבצים בתחנת העבודה של האדמין
שוב, יוצרים חיבור SSH לתחנת העבודה של האדמין.
בתחנת העבודה של האדמין, מציגים את רשימת הקבצים בספריית הבית:
ls -1
הפלט צריך לכלול:
-
admin-cluster.yaml, קובץ תצורה של תבנית ליצירת אשכול אדמין. -
user-cluster.yaml, קובץ תצורה של תבנית ליצירת אשכול משתמשים. - קובץ האישור של vCenter שציינתם בהגדרות של תחנת העבודה של האדמין
- קובץ
credential.yamlשציינתם בהגדרות של תחנת העבודה של האדמין. - קובץ מפתח JSON של חשבון השירות שלכם ליומן ביקורת.
- קובצי מפתח JSON לשני חשבונות שירות ש
gkeadmיצר בשבילכם: חשבון שירות לרישום חיבור וחשבון שירות לרישום ביומן ולמעקב, וגם קובץ המפתח של חשבון השירות לגישה לרכיבים שיצרתם קודם.
לדוגמה:
admin-cluster.yaml admin-ws-config.yaml audit-logging-key.json sa-key.json connect-register-sa-2203040617.json credential.yaml log-mon-sa-2203040617.json logs vc01-cert.pem user-cluster.yaml
כדי ליצור אשכולות, צריך לציין חלק משמות הקבצים האלה בקובצי ההגדרות. משתמשים בשמות הקבצים כערכים ל-placeholders בטבלה הבאה:
| שם הקובץ של מפתח חשבון השירות של Connect-register דוגמה: connect-register-sa-2203040617.json |
CONNECT_REGISTER_SA_KEY |
| שם הקובץ של מפתח חשבון השירות לרישום ביומן ולמעקב דוגמה: log-mon-sa-2203040617.json |
LOG_MON_SA_KEY |
| שם הקובץ של מפתח חשבון השירות לרישום ביומן הביקורת דוגמה: audit-logging-key.json |
AUDIT_LOG_SA_KEY |
| שם הקובץ של מפתח חשבון השירות לגישה לרכיב דוגמה: sa-key.json |
COMPONENT_ACCESS_SA_KEY |
| שם הקובץ של האישור ב-vCenter דוגמה: vc01-cert.pem |
CA_CERT_FILE |
4. יצירת אשכול אדמין
אחרי שמגדירים תחנת עבודה לאדמין עם vCenter ופרטים אחרים, אפשר להשתמש בה כדי ליצור אשכול אדמין בסביבת vSphere. לפני שמתחילים בשלב הזה, מוודאים שיש חיבור SSH לתחנת העבודה של האדמין, כמו שמתואר למעלה. כל הפקודות הבאות מורצות בתחנת העבודה של האדמין.
יצירת קובץ התצורה של אשכול האדמין
פותחים את admin-cluster.yaml ומחליפים את התוכן בתוכן הבא:
apiVersion: v1
kind: AdminCluster
name: "minimal-installation-admin-cluster"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.34.100-gke.93-full.tgz"
vCenter:
address: "ADDRESS"
datacenter: "DATA_CENTER"
cluster: "VSPHERE_CLUSTER"
resourcePool: "RESOURCE_POOL"
datastore: "DATASTORE"
caCertPath: "CA_CERT_FILE"
credentials:
fileRef:
path: "credential.yaml"
entry: "vCenter"
network:
hostConfig:
dnsServers:
- "DNS_SERVER_IP"
ntpServers:
- "NTP_SERVER_IP"
serviceCIDR: "10.96.232.0/24"
podCIDR: "192.168.0.0/16"
vCenter:
networkName: "NETWORK"
controlPlaneIPBlock:
netmask: "NETMASK"
gateway: "DEFAULT_GATEWAY_IP"
ips:
- ip: "ADMIN_CONTROL_PLANE_NODE_IP_1"
hostname: "admin-cp-vm-1"
- ip: "ADMIN_CONTROL_PLANE_NODE_IP_2"
hostname: "admin-cp-vm-2"
- ip: "ADMIN_CONTROL_PLANE_NODE_IP_3"
hostname: "admin-cp-vm-3"
loadBalancer:
vips:
controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP"
kind: "MetalLB"
adminMaster:
cpus: 4
memoryMB: 16384
replicas: 3
antiAffinityGroups:
enabled: false
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY"
gkeConnect:
projectID: "PROJECT_ID"
registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
projectID: "PROJECT_ID"
clusterLocation: "us-central1"
enableVPC: false
serviceAccountKeyPath: "LOG_MON_SA_KEY"
disableVsphereResourceMetrics: false
cloudAuditLogging:
projectID: "PROJECT_ID"
clusterLocation: us-central1
serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"
אימות קובץ התצורה של אשכול האדמין
מוודאים שקובץ התצורה של אשכול הניהול תקין ושאפשר להשתמש בו ליצירת אשכול:
gkectl check-config --config admin-cluster.yaml
ייבוא תמונות של מערכת הפעלה ל-vSphere
מריצים את הפקודה gkectl prepare עם קובץ התצורה שהושלם כדי לייבא תמונות של מערכת הפעלה של צמתים אל vSphere:
gkectl prepare --config admin-cluster.yaml --skip-validation-all
הפעלת הפקודה הזו מייבאת את התמונות אל vSphere ומסמנת אותן כתבניות של מכונות וירטואליות, כולל התמונה של אשכול האדמין.
יכולות לעבור כמה דקות עד שהפקודה הזו תחזיר תוצאה.
יצירת אשכול האדמין
יוצרים את אשכול האדמין:
gkectl create admin --config admin-cluster.yaml
המשך יצירת אשכול אדמין אחרי כשל
אם יצירת אשכול האדמין נכשלת או מבוטלת, אפשר להריץ שוב את הפקודה create:
gkectl create admin --config admin-cluster.yaml
איתור קובץ ה-kubeconfig של אשכול האדמין
הפקודה gkectl create admin יוצרת קובץ kubeconfig בשם kubeconfig בספרייה הנוכחית. תצטרכו את קובץ ה-kubeconfig הזה בהמשך כדי לבצע אינטראקציה עם אשכול האדמין.
אימות הפעלת אשכול האדמין
מוודאים שקלאסטר האדמין פועל:
kubectl get nodes --kubeconfig kubeconfig
בפלט מוצגים הצמתים של אשכול האדמין. לדוגמה:
admin-cp-vm-1 Ready control-plane,master ... admin-cp-vm-2 Ready control-plane,master ... admin-cp-vm-3 Ready control-plane,master ...
הפעלת הרשאה מבוססת-תפקידים
כדי להקצות לחשבון המשתמש שלכם את התפקיד clusterrole/cluster-admin ב-Kubernetes באשכול, מריצים את הפקודה הבאה:
gcloud container fleet memberships generate-gateway-rbac \ --membership=minimal-installation-admin-cluster \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=kubeconfig \ --context=minimal-installation-admin-cluster \ --apply
הפלט של הפקודה הזו דומה לזה שמופיע בהמשך, אבל הוא קוצר כדי שיהיה קל יותר לקרוא אותו:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
בין היתר, מדיניות RBAC מאפשרת לכם להתחבר לאשכול במסוףGoogle Cloud באמצעות הזהות שלכם ב-Google כדי לראות פרטים נוספים על האשכול.
רישום אוטומטי ב-GKE On-Prem API
מכיוון ש-GKE On-Prem API מופעל בפרויקט, האשכול נרשם אוטומטית ל-GKE On-Prem API. רישום של אשכול האדמין ב-GKE On-Prem API מאפשר לכם להשתמש בכלים סטנדרטיים –Google Cloud המסוף, Google Cloud CLI או Terraform – כדי ליצור, לשדרג, לעדכן ולמחוק אשכולות משתמשים שמנוהלים על ידי אשכול האדמין. ההרשמה של האשכול מאפשרת גם להריץ פקודות gcloud כדי לקבל מידע על האשכול.
5. יצירת אשכול משתמשים
בקטע הזה מפורטים השלבים ליצירת אשכול משתמשים באמצעות המסוף, gkectl, Terraform או ה-CLI של gcloud.
gkectl
לפני שמתחילים בתהליך הזה, חשוב לוודא שיש חיבור SSH לתחנת העבודה של האדמין, כמו שמתואר למעלה. כל הפקודות הבאות מורצות בתחנת העבודה של האדמין.
יצירת קובץ של בלוק כתובות IP לאשכול המשתמשים
יוצרים קובץ בשם
user-ipblock.yaml.מעתיקים את התוכן הבא ומדביקים אותו בקובץ
user-ipblock.yamlושומרים את הקובץ:blocks: - netmask: "NETMASK" gateway: "DEFAULT_GATEWAY_IP" ips: - ip: "USER_NODE_IP_1" hostname: "user-vm-1" - ip: "USER_NODE_IP_2" hostname: "user-vm-2" - ip: "USER_NODE_IP_3" hostname: "user-vm-3" - ip: "USER_NODE_IP_4" hostname: "user-vm-4"
יצירת קובץ התצורה של אשכול המשתמשים
יוצרים קובץ בשם
user-cluster.yamlבאותה ספרייה שבה נמצא הקובץuser-ipblock.yaml.מעתיקים את התוכן הבא ומדביקים אותו בקובץ
user-cluster.yamlושומרים את הקובץ:
apiVersion: v1
kind: UserCluster
name: "minimal-installation-user-cluster"
gkeOnPremVersion: "1.34.100-gke.93"
enableControlplaneV2: true
network:
hostConfig:
dnsServers:
- "DNS_SERVER_IP"
ntpServers:
- "NTP_SERVER_IP"
ipMode:
type: "static"
ipBlockFilePath: "user-ipblock.yaml"
serviceCIDR: "10.96.0.0/20"
podCIDR: "192.168.0.0/16"
controlPlaneIPBlock:
netmask: "NETMASK"
gateway: "DEFAULT_GATEWAY_IP"
ips:
- ip: "USER_CONTROL_PLANE_NODE_IP"
hostname: "cp-vm-1"
loadBalancer:
vips:
controlPlaneVIP: "USER_CONTROL_PLANE_VIP"
ingressVIP: "USER_INGRESS_VIP"
kind: "MetalLB"
metalLB:
addressPools:
- name: "uc-address-pool"
addresses:
- "USER_INGRESS_VIP/32"
- "SERVICE_VIP_1/32"
- "SERVICE_VIP_2/32"
enableDataplaneV2: true
nodePools:
- name: "uc-node-pool"
cpus: 4
memoryMB: 8192
replicas: 3
enableLoadBalancer: true
antiAffinityGroups:
enabled: false
gkeConnect:
projectID: "PROJECT_ID"
registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY"
stackdriver:
projectID: "PROJECT_ID"
clusterLocation: "us-central1"
enableVPC: false
serviceAccountKeyPath: "LOG_MON_SA_KEY"
disableVsphereResourceMetrics: false
autoRepair:
enabled: true
אימות ההגדרה ויצירת האשכול
התמיכה בפקודה gkectl check-config באשכולות של משתמשים מתקדמים נוספה בגרסאות הבאות: 1.32.700 ומעלה, 1.33.300 ומעלה ו-1.34.0 ומעלה.
אם מתקינים גרסה נמוכה יותר באשכול מתקדם, הפקודה תיכשל.
מוודאים שקובץ התצורה של אשכול המשתמשים תקין ושאפשר להשתמש בו ליצירת אשכול:
gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
יוצרים את אשכול המשתמשים:
gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
יצירת האשכול נמשכת כ-30 דקות.
איתור קובץ ה-kubeconfig של אשכול המשתמשים
הפקודה gkectl create cluster יוצרת קובץ kubeconfig בשם USER_CLUSTER_NAME-kubeconfig בספרייה הנוכחית. תצטרכו את קובץ ה-kubeconfig הזה בהמשך כדי ליצור אינטראקציה עם אשכול המשתמשים.
אימות הפעלת אשכול המשתמשים
מוודאים שקלאסטר המשתמשים פועל:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
מחליפים את USER_CLUSTER_KUBECONFIG בנתיב של קובץ ה-kubeconfig של אשכול המשתמשים.
בפלט מוצגים הצמתים של אשכול המשתמשים. לדוגמה:
cp-vm-1 Ready control-plane,master user-vm-1 Ready user-vm-2 Ready user-vm-3 Ready
הפעלת הרשאה מבוססת-תפקידים
כדי להקצות לחשבון המשתמש שלכם את התפקיד clusterrole/cluster-admin ב-Kubernetes באשכול, מריצים את הפקודה הבאה:
gcloud container fleet memberships generate-gateway-rbac \ --membership=minimal-installation-user-cluster \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=USER_CLUSTER_KUBECONFIG \ --context=minimal-installation-user-cluster \ --apply
הפלט של הפקודה הזו דומה לזה שמופיע בהמשך, אבל הוא קוצר כדי שיהיה קל יותר לקרוא אותו:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
בין היתר, מדיניות RBAC מאפשרת לכם להתחבר לאשכול במסוףGoogle Cloud באמצעות הזהות שלכם ב-Google כדי לראות פרטים נוספים על האשכול.
רישום אוטומטי ב-GKE On-Prem API
מכיוון ש-GKE On-Prem API מופעל בפרויקט, האשכול נרשם אוטומטית ל-GKE On-Prem API. כך תוכלו להשתמש במסוף או ב-CLI של gcloud כדי להציג את פרטי האשכול ולנהל את מחזור החיים של האשכול. לדוגמה, אתם יכולים להריץ פקודות gcloud כדי לקבל מידע על אשכול המשתמשים.
המסוף
נכנסים לדף Create a Google Distributed Cloud cluster במסוף Google Cloud .
בוחרים את Google Cloud הפרויקט שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של צי המכונות. הפרויקט הזה צריך להיות זהה לפרויקט שבו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמשים, הוא נרשם אוטומטית לצי הפרויקט שנבחר.
בקטעים הבאים מפורט תהליך ההגדרה של אשכול המשתמשים.
דרישות מוקדמות
חשוב לעיין במידע שבדף דרישות מוקדמות.
בתחתית הדף, לוחצים על הבא.
מידע בסיסי על אשכולות
בשדה Name (שם), מזינים שם לאשכול המשתמשים, לדוגמה,
minimal-installation-user-cluster.בקטע Admin cluster (אשכול אדמין), בוחרים באפשרות minimal-installation-admin-cluster (אשכול אדמין עם התקנה מינימלית).
בשדה GCP API Location, בוחרים באפשרות us-central1.
בשדה Version, בוחרים באפשרות 1.34.100-gke.93.
אין צורך לפתוח את הקטע Authorization (הרשאה) או את הקטע vCenter configuration (הגדרת vCenter).
לוחצים על הבא.
מישור הבקרה
בקטע Control plane node IPs (כתובות IP של צומת מישור הבקרה), בשדה Gateway (שער), מזינים DEFAULT_GATEWAY_IP.
בשדה מסכה של רשת משנה, מזינים NETMASK.
בקטע כתובות IP, בשדה כתובת IP 1, מזינים USER_CONTROL_PLANE_NODE_IP. משאירים את השדה Hostname 1 (שם המארח 1) ריק.
לוחצים על הבא.
Networking
בקטע הזה מציינים את כתובות ה-IP של הצמתים, ה-Pods והשירותים של האשכול. לכל צומת באשכול משתמשים צריך להיות כתובת IP אחת, ועוד כתובת IP לצומת זמני שנדרש במהלך שדרוגים, עדכונים ותיקונים אוטומטיים של האשכול. מידע נוסף זמין במאמר כמה כתובות IP נדרשות לאשכול משתמשים?.
בקטע כתובות IP של צומת עובד, מוודאים שבקטע מצב IP נבחרה האפשרות Static.
בשדה Gateway (שער), מזינים DEFAULT_GATEWAY_IP.
בשדה מסכה של רשת משנה, מזינים NETMASK.
בקטע כתובות IP, מזינים את הכתובות הבאות:
- USER_NODE_IP_1
- USER_NODE_IP_2
- USER_NODE_IP_3
- USER_NODE_IP_4
משאירים את השדות שם המארח ריקים.
בשדה Service CIDR, מזינים 10.96.0.0/20. בשדה Pod CIDR (טווח כתובות ה-IP של הפודים), מזינים 192.168.0.0/16.
בשדה DNS Server 1, מזינים DNS_SERVER_IP.
בקטע NTP Server 1, מזינים NTP_SERVER_IP.
משאירים את השדה DNS search domain (דומיין חיפוש DNS) ריק.
לוחצים על הבא.
מאזן עומסים
בקטע Load balancer type (סוג מאזן העומסים), בוחרים באפשרות Bundled with MetalLB (חבילה עם MetalLB).
בקטע Address pools (מאגרי כתובות), משתמשים בשם ברירת המחדל.
בקטע כתובות IP, בשדה טווח כתובות IP 1, מזינים USER_INGRESS_VIP/32.
לוחצים על הוספת טווח כתובות IP. בשדה טווח כתובות IP 1, מזינים SERVICE_VIP_1/32
לוחצים על הוספת טווח כתובות IP. בשדה טווח כתובות IP 2, מזינים SERVICE_VIP_2/32
בקטע הקצאת כתובות IP, בוחרים באפשרות אוטומטית.
משאירים את תיבת הסימון Avoid buggy IP addresses (מניעת שימוש בכתובות IP עם באגים) לא מסומנת.
בקטע Virtual IPs, עבור Control plane VIP מזינים USER_CONTROL_PLANE_VIP. השדה Ingress VIP כבר מלא.
לוחצים על Continue.
תכונות
משאירים את כל ברירות המחדל.
לוחצים על הבא.
מאגרי צמתים
משאירים את כל ברירות המחדל.
לוחצים על אימות והשלמה כדי ליצור את אשכול המשתמשים. יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. במסוף מוצגים הודעות סטטוס בזמן שהמערכת מאמתת את ההגדרות ויוצרת את האשכול במרכז הנתונים.
אם מתגלה שגיאה באימות ההגדרות, במסוף מוצגת הודעת שגיאה שצריכה להיות ברורה מספיק כדי שתוכלו לפתור את בעיית ההגדרה ולנסות שוב ליצור את האשכול.
מידע נוסף על שגיאות אפשריות ועל אופן התיקון שלהן זמין במאמר פתרון בעיות באשכולות שרשומים ל-GKE On-Prem API.
Terraform
בקטע הזה מוסבר איך ליצור אשכול משתמשים ומאגר צמתים באמצעות Terraform. מידע נוסף ודוגמאות נוספות מופיעים במאמרים הבאים:
יוצרים ספרייה חדשה ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tfבודקים את משאב Terraform של אשכול המשתמשים:
בדוגמה הבאה של משאב Terraform, הערכים שהזנתם בטבלת התכנון בקטע הקודם מופיעים.
resource "google_gkeonprem_vmware_cluster" "cluster-basic" { name = "minimal-installation-user-cluster" project = "PROJECT_ID" location = "us-central1" admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster" description = "User cluster config with MetalLB, static IPs, and Controlplane V2" enable_control_plane_v2 = "true" on_prem_version = "1.34.100-gke.93" control_plane_node { cpus = 4 memory = 8192 replicas = 1 } network_config { service_address_cidr_blocks = ["10.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] host_config { dns_servers = ["DNS_SERVER_IP"] ntp_servers = ["NTP_SERVER_IP"] } static_ip_config { ip_blocks { netmask = "NETMASK" gateway = "DEFAULT_GATEWAY_IP" ips { ip = "USER_NODE_IP_1" hostname = "user-vm-1" } ips { ip = "USER_NODE_IP_2" hostname = "user-vm-2" } ips { ip = "USER_NODE_IP_3" hostname = "user-vm-3" } ips { ip = "USER_NODE_IP_4" hostname = "user-vm-4" } } } control_plane_v2_config { control_plane_ip_block { netmask = "NETMASK" gateway = "DEFAULT_GATEWAY_IP" ips { ip = "USER_CONTROL_PLANE_NODE_IP" hostname = "cp-vm-1" } } } } load_balancer { vip_config { control_plane_vip = "USER_CONTROL_PLANE_VIP" ingress_vip = "USER_INGRESS_VIP" } metal_lb_config { address_pools { pool = "uc-address-pool" manual_assign = "true" addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"] } } } authorization { admin_users { username = "GOOGLE_ACCOUNT_EMAIL" } } provider = google-beta } resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" { name = "uc-node-pool" project = "PROJECT_ID" vmware_cluster = "minimal-installation-user-cluster" location = "us-central1" config { replicas = 3 image_type = "ubuntu_containerd" enable_load_balancer = "true" } depends_on = [ google_gkeonprem_vmware_cluster.cluster-basic ] provider = google-beta }מעתיקים את משאב Terraform אל
main.tfושומרים את הקובץ.מאתחלים ויוצרים את תוכנית Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו ספק Google Cloud .
בודקים את ההגדרות ומבצעים שינויים לפי הצורך:
terraform planמחילים את תוכנית Terraform כדי ליצור את אשכול המשתמשים:
terraform applyכשתופיע בקשה, כותבים
yes.יצירת אשכול המשתמשים הבסיסי ומאגר הצמתים נמשכת כ-15 דקות (או יותר, בהתאם לרשת).
gcloud
יוצרים את האשכול:
gcloud container vmware clusters create minimal-installation-user-cluster \ --project=PROJECT_ID \ --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \ --location=us-central1 \ --version=1.34.100-gke.93 \ --admin-users=GOOGLE_ACCOUNT_EMAIL \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \ --control-plane-vip=USER_CONTROL_PLANE_VIP \ --ingress-vip=USER_INGRESS_VIP \ --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \ --dns-servers=DNS_SERVER_IP \ --ntp-servers=NTP_SERVER_IP \ --enable-control-plane-v2 \ --enable-dataplane-v2 \ --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'
הפלט של הפקודה אמור להיראות כך:
Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
בפלט לדוגמה, המחרוזת operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 היא OPERATION_ID של הפעולה שפועלת לאורך זמן. אפשר לבדוק את סטטוס הפעולה באמצעות הפקודה הבאה:
gcloud container vmware operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=us-central1
מידע נוסף זמין במאמר בנושא gcloud container vmware operations.
יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. אפשר לראות את האשכול במסוף בדף הסקירה הכללית של אשכולות Google Kubernetes Engine.
יוצרים מאגר צמתים:
gcloud container vmware node-pools create uc-node-pool \ --cluster=minimal-installation-user-cluster \ --project=PROJECT_ID \ --location=us-central1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=4 \ --memory=8192 \ --replicas=3 \ --enable-load-balancer
המאמרים הבאים
השלמתם את ההתקנה המינימלית הזו של Google Distributed Cloud. כפעולה אופציונלית, אפשר לראות את ההתקנה בפעולה על ידי פריסת אפליקציה.