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

זהו החלק השני של המדריך שבו מוסבר איך להתקין את Google Distributed Cloud בקנה מידה קטן, כהוכחת היתכנות. בחלק הראשון, הגדרת תשתית מינימלית, מוסבר איך לתכנן את כתובות ה-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, יכול להיות שתופיע ההודעה הבאה: "You cannot perform this action because the gcloud CLI component manager is disabled for this installation. אפשר להריץ את הפקודה הבאה כדי להשיג את אותה תוצאה בהתקנה הזו:" פועלים לפי ההוראות כדי להעתיק ולהדביק את הפקודה לעדכון הרכיבים.

2. איסוף מידע

משתמשים במידע שהכנתם בהגדרת תשתית מינימלית כדי לערוך את הפלייסהולדרים בטבלה הבאה:

פרטי vSphere
שם המשתמש של חשבון vCenter USERNAME
הסיסמה של חשבון vCenter PASSWORD
כתובת שרת ה-vCenter שלכם ADDRESS
הנתיב לאישור ה-CA הבסיסי של שרת ה-vCenter, במכונה שבה תשתמשו כדי ליצור את תחנת העבודה של האדמין. 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 לשרת ה-API של Kubernetes באשכול המשתמש USER_CONTROL_PLANE_VIP
כתובת IP וירטואלית של 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 לפודים. משתמשים בערכים הבאים שמולאו מראש, אלא אם צריך לשנות אותם כדי למנוע חפיפה עם רכיבים אחרים ברשת:
טווח 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.36.200-gke.118/linux/gkeadm ./
chmod +x gkeadm

כדי ליצור את קובצי התצורה של אשכולות האדמין והמשתמשים, אתם צריכים את הגרסה של gkeadm (שהיא גם הגרסה של Google Distributed Cloud). כדי לבדוק את הגרסה של gkeadm, מריצים את הפקודה הבאה:

./gkeadm version

הגרסה מוצגת בפלט לדוגמה הבא.

gkeadm 1.36.200 (1.36.200-gke.118)

אפשר להוריד גרסה אחרת של gkeadm, אבל במדריך הזה אנחנו מניחים שאתם מתקינים את גרסה 1.36.200-gke.118, ומשתמשים בה בכל קובצי התצורה והפקודות.

יצירת קובץ פרטי הכניסה

יוצרים קובץ בשם 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
שם הקובץ של המפתח לחשבון השירות של Logging-monitoring
דוגמה: 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.36.200-gke.118-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 ...

הפעלת הרשאת RBAC

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

רישום אוטומטי ב-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.36.200-gke.118"
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

הפעלת הרשאת RBAC

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

רישום אוטומטי ב-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 שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של ה-fleet. זה צריך להיות אותו פרויקט שאליו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמש, הוא נרשם באופן אוטומטי ל-fleet של הפרויקט שנבחר.

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

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

  1. קוראים את המידע בדף דרישות מוקדמות.

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

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

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

  2. בשדה Admin cluster, בוחרים באפשרות minimal-installation-admin-cluster.

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

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

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

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

מישור הבקרה

  1. בקטע כתובות IP של צומתי מישור הבקרה, בשדה שער מזינים את הערך 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 של צומת עובד, מוודאים שהאפשרות Static נבחרה בשדה מצב IP.

  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

משאירים את השדות של Hostname (שם המארח) ריקים.

  1. בשדה Service CIDR, מזינים 10.96.0.0/20. בשדה Pod CIDR, מזינים את הערך 192.168.0.0/16.

  2. בשדה DNS Server 1 (שרת DNS מס' 1), מזינים את הערך DNS_SERVER_IP.

  3. בשדה שרת NTP 1 מזינים את הערך NTP_SERVER_IP.

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

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

מאזן עומסים

  1. בשדה Load balancer type, בוחרים באפשרות Bundled with 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, בוחרים באפשרות Automatic.

  5. משאירים את האפשרות Avoid buggy IP addresses לא מסומנת.

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

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

תכונות

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

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

מאגרי צמתים

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

  2. לוחצים על Verify and Complete כדי ליצור את אשכול המשתמשים. יצירת אשכול המשתמשים נמשכת 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.36.200-gke.118"
      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.36.200-gke.118 \
  --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. כדי לראות את ההתקנה בפעולה, אתם יכולים לפרוס אפליקציה.