יצירת אשכולות בסיסיים

זהו החלק השני במדריך שמסביר איך להתקין את Google Distributed Cloud בהתקנה קטנה להוכחת היתכנות. החלק הראשון הוא Set up minimal infrastructure (הגדרת תשתית מינימלית), שבו מוסבר איך לתכנן את כתובות ה-IP ולהגדיר את התשתית הנדרשת של vSphere ו- Google Cloud לפריסה. המסמך הזה מבוסס על ההגדרה והתכנון שביצעתם בקטע הקודם, ומראה לכם איך ליצור תחנת עבודה למנהלים, אשכול אדמין ואשכול משתמשים בסביבת vSphere, באמצעות תבניות שאפשר למלא כאן במסמך הזה. אחר כך אפשר לפרוס אפליקציה.

כמו בהגדרת התשתית של ההתקנה הבסיסית הזו, יכול להיות שהאשכולות שתגדירו באמצעות המסמך הזה לא יתאימו לצרכים ולתרחישי השימוש בפועל שלכם. מידע נוסף, שיטות מומלצות והוראות להתקנות בייצור זמינים במדריכי ההתקנה.

בגרסה 1.33 ואילך, כל האשכולות החדשים נוצרים כאשכולות מתקדמים. חשוב לעיין במאמרים הבדלים בהפעלת אשכולות מתקדמים והבדלים ביצירה ובשדרוג של אשכולות.

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

  1. חשוב לוודא שהגדרתם את סביבות vSphere ו- Google Cloud כמו שמתואר במאמר הגדרת תשתית מינימלית.

  2. אם רוצים להשתמש ב-Terraform כדי ליצור את אשכול המשתמשים, צריך להתקין את Terraform בתחנת העבודה של האדמין או במחשב אחר.

סקירה כללית של התהליך

אלה השלבים העיקריים שנדרשים להגדרה הזו:

  1. מתחברים ל-Google Cloud CLI באמצעות חשבון שיש לו את ההרשאות הנדרשות ליצירת חשבונות שירות.

  2. אוספים את המידע שנדרש להגדרת Google Distributed Cloud, כולל שם המשתמש והסיסמה של vCenter וכתובות ה-IP שהכנתם בקטע הקודם.

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

  4. יוצרים אשכול אדמין כדי לנהל ולעדכן את אשכול המשתמשים.

  5. יוצרים אשכול משתמשים כדי להריץ את עומסי העבודה.

1. כניסה ל-Google Cloud CLI

כדי להגדיר את Google Distributed Cloud, צריך כמה חשבונות שירות עם הרשאות שונות. לכן, כדי לבצע את ההגדרה הזו, צריך להתחבר ל-Google Cloud CLI באמצעות חשבון שיש לו את ההרשאות הנדרשות ליצירה ולהגדרה של חשבונות שירות, כי gkeadm משתמש במאפיין הנוכחי של account ב-CLI של gcloud.

  1. מתחברים ל-CLI של gcloud. אפשר להשתמש בכל חשבון Google, אבל צריכות להיות לו ההרשאות הנדרשות. אם פעלתם לפי החלק הקודם במדריך הזה, סביר להניח שכבר התחברתם באמצעות חשבון מתאים כדי ליצור את חשבון השירות של רכיב הגישה.

    gcloud auth login
    
  2. מוודאים שהמאפיין account של ה-CLI של gcloud מוגדר בצורה נכונה:

    gcloud config list
    

    בפלט מוצג הערך של הנכס account של ערכת ה-SDK. לדוגמה:

    [core]
    account = my-name@google.com
    disable_usage_reporting = False
    Your active configuration is: [default]
    
  3. מוודאים שהרכיבים העדכניים של ה-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 לאשכול המשתמשים

  1. יוצרים קובץ בשם user-ipblock.yaml.

  2. מעתיקים את התוכן הבא ומדביקים אותו בקובץ 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"
    

יצירת קובץ התצורה של אשכול המשתמשים

  1. יוצרים קובץ בשם user-cluster.yaml באותה ספרייה שבה נמצא הקובץ user-ipblock.yaml.

  2. מעתיקים את התוכן הבא ומדביקים אותו בקובץ 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 ומעלה. אם מתקינים גרסה נמוכה יותר באשכול מתקדם, הפקודה תיכשל.

  1. מוודאים שקובץ התצורה של אשכול המשתמשים תקין ושאפשר להשתמש בו ליצירת אשכול:

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
  2. יוצרים את אשכול המשתמשים:

    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 כדי לקבל מידע על אשכול המשתמשים.

המסוף

  1. נכנסים לדף Create a Google Distributed Cloud cluster במסוף Google Cloud .

    איך יוצרים אשכול Google Distributed Cloud

  2. בוחרים את Google Cloud הפרויקט שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של צי המכונות. הפרויקט הזה צריך להיות זהה לפרויקט שבו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמשים, הוא נרשם אוטומטית לצי הפרויקט שנבחר.

בקטעים הבאים מפורט תהליך ההגדרה של אשכול המשתמשים.

דרישות מוקדמות

  1. חשוב לעיין במידע שבדף דרישות מוקדמות.

  2. בתחתית הדף, לוחצים על הבא.

מידע בסיסי על אשכולות

  1. בשדה Name (שם), מזינים שם לאשכול המשתמשים, לדוגמה, minimal-installation-user-cluster.

  2. בקטע Admin cluster (אשכול אדמין), בוחרים באפשרות minimal-installation-admin-cluster (אשכול אדמין עם התקנה מינימלית).

  3. בשדה GCP API Location, בוחרים באפשרות us-central1.

  4. בשדה Version, בוחרים באפשרות 1.34.100-gke.93.

  5. אין צורך לפתוח את הקטע Authorization (הרשאה) או את הקטע vCenter configuration (הגדרת vCenter).

  6. לוחצים על הבא.

מישור הבקרה

  1. בקטע Control plane node IPs (כתובות IP של צומת מישור הבקרה), בשדה Gateway (שער), מזינים DEFAULT_GATEWAY_IP.

  2. בשדה מסכה של רשת משנה, מזינים NETMASK.

  3. בקטע כתובות IP, בשדה כתובת IP‏ 1, מזינים USER_CONTROL_PLANE_NODE_IP. משאירים את השדה Hostname 1 (שם המארח 1) ריק.

  4. לוחצים על הבא.

Networking

בקטע הזה מציינים את כתובות ה-IP של הצמתים, ה-Pods והשירותים של האשכול. לכל צומת באשכול משתמשים צריך להיות כתובת IP אחת, ועוד כתובת IP לצומת זמני שנדרש במהלך שדרוגים, עדכונים ותיקונים אוטומטיים של האשכול. מידע נוסף זמין במאמר כמה כתובות IP נדרשות לאשכול משתמשים?.

  1. בקטע כתובות IP של צומת עובד, מוודאים שבקטע מצב IP נבחרה האפשרות Static.

  2. בשדה Gateway (שער), מזינים DEFAULT_GATEWAY_IP.

  3. בשדה מסכה של רשת משנה, מזינים NETMASK.

  4. בקטע כתובות IP, מזינים את הכתובות הבאות:

  • USER_NODE_IP_1
  • USER_NODE_IP_2
  • USER_NODE_IP_3
  • USER_NODE_IP_4

משאירים את השדות שם המארח ריקים.

  1. בשדה Service CIDR, מזינים 10.96.0.0/20. בשדה Pod CIDR (טווח כתובות ה-IP של הפודים), מזינים 192.168.0.0/16.

  2. בשדה DNS Server 1, מזינים DNS_SERVER_IP.

  3. בקטע NTP Server 1, מזינים NTP_SERVER_IP.

  4. משאירים את השדה DNS search domain (דומיין חיפוש DNS) ריק.

  5. לוחצים על הבא.

מאזן עומסים

  1. בקטע Load balancer type (סוג מאזן העומסים), בוחרים באפשרות Bundled with MetalLB (חבילה עם MetalLB).

  2. בקטע Address pools (מאגרי כתובות), משתמשים בשם ברירת המחדל.

  3. בקטע כתובות IP, בשדה טווח כתובות IP‏ 1, מזינים USER_INGRESS_VIP/32.

    לוחצים על הוספת טווח כתובות IP. בשדה טווח כתובות IP 1, מזינים SERVICE_VIP_1/32

    לוחצים על הוספת טווח כתובות IP. בשדה טווח כתובות IP 2, מזינים SERVICE_VIP_2/32

  4. בקטע הקצאת כתובות IP, בוחרים באפשרות אוטומטית.

  5. משאירים את תיבת הסימון Avoid buggy IP addresses (מניעת שימוש בכתובות IP עם באגים) לא מסומנת.

  6. בקטע Virtual IPs, עבור Control plane VIP מזינים USER_CONTROL_PLANE_VIP. השדה Ingress VIP כבר מלא.

  7. לוחצים על Continue.

תכונות

  1. משאירים את כל ברירות המחדל.

  2. לוחצים על הבא.

מאגרי צמתים

  1. משאירים את כל ברירות המחדל.

  2. לוחצים על אימות והשלמה כדי ליצור את אשכול המשתמשים. יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. במסוף מוצגים הודעות סטטוס בזמן שהמערכת מאמתת את ההגדרות ויוצרת את האשכול במרכז הנתונים.

    אם מתגלה שגיאה באימות ההגדרות, במסוף מוצגת הודעת שגיאה שצריכה להיות ברורה מספיק כדי שתוכלו לפתור את בעיית ההגדרה ולנסות שוב ליצור את האשכול.

    מידע נוסף על שגיאות אפשריות ועל אופן התיקון שלהן זמין במאמר פתרון בעיות באשכולות שרשומים ל-GKE On-Prem API.

Terraform

בקטע הזה מוסבר איך ליצור אשכול משתמשים ומאגר צמתים באמצעות Terraform. מידע נוסף ודוגמאות נוספות מופיעים במאמרים הבאים:

  1. יוצרים ספרייה חדשה ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf. במדריך הזה, הקובץ נקרא main.tf.

    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    
  2. בודקים את משאב 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
    }
    
  3. מעתיקים את משאב Terraform אל main.tf ושומרים את הקובץ.

  4. מאתחלים ויוצרים את תוכנית Terraform:

    terraform init
    

    ‫Terraform מתקין את כל הספריות הנדרשות, כמו ספק Google Cloud .

  5. בודקים את ההגדרות ומבצעים שינויים לפי הצורך:

    terraform plan
    
  6. מחילים את תוכנית 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. כפעולה אופציונלית, אפשר לראות את ההתקנה בפעולה על ידי פריסת אפליקציה.