יצירת אשכול אדמין באמצעות `gketl`

יוצרים אשכול אדמין לתוכנת Google Distributed Cloud רק ל-VMware באמצעות gkectl. משתמשים ב-gkectl אם אתם צריכים לנהל את כל מחזור החיים של אשכול האדמין באופן מקומי בסביבה המקומית שלכם כדי לעמוד בדרישות מחמירות של אבטחה, תאימות או סביבה מבודדת. אפשר גם ליצור אשכול אדמין באמצעות Terraform או מסוףGoogle Cloud .

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

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

  • מוודאים שקובצי מפתח ה-JSON של חשבונות השירות נמצאים בתחנת העבודה של האדמין.

  • מעיינים במסמך התכנון של כתובות ה-IP. מוודאים שיש מספיק כתובות IP זמינות לשלושת הצמתים של רמת הבקרה ולכתובת ה-IP הווירטואלית של רמת הבקרה. אם אתם מתכננים ליצור אשכולות משתמשים מסוג kubeception, אתם צריכים לוודא שיש לכם מספיק כתובות IP זמינות לצמתי מישור הבקרה של אשכולות המשתמשים האלה.

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

  • אם אתם משתמשים ב-gkectl כדי ליצור את אשכול האדמין, אתם צריכים להחליט אם אתם רוצים להשתמש במאגר ציבורי או פרטי לרכיבי Google Distributed Cloud. מידע על שימוש במאגר פרטי של Docker זמין במאמר privateRegistry. אי אפשר להשתמש במאגר Docker פרטי לרכיבי מערכת, גם לא ב-Terraform וגם לא במסוף Google Cloud .

  • מחליטים איזה סוג של מערכת הפעלה רוצים להפעיל בצמתים של אשכול האדמין.

  • אם הארגון שלכם דורש שתעבורה יוצאת תעבור דרך שרת proxy, הקפידו להוסיף לרשימת ההיתרים את ממשקי ה-API הנדרשים ואת הכתובת של Artifact Registry.

  • בגרסה 1.29 ומעלה, בדיקות מקדימות בצד השרת מופעלות כברירת מחדל. בדיקות קדם-הפעלה בצד השרת דורשות כללי חומת אש נוספים. בקטע Firewall rules for admin clusters (כללי חומת אש לאשכולות אדמין), מחפשים את האפשרות Preflight checks (בדיקות לפני המראה) ומוודאים שכל כללי חומת האש הנדרשים מוגדרים. בדיקות מקדימות בצד השרת מופעלות באשכול bootstrap במקום באופן מקומי בתחנת העבודה של האדמין.

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

אלה השלבים העיקריים שנדרשים ליצירת אשכול אדמין:

  1. ממלאים את קובצי התצורה. מציינים את הפרטים של קובץ התצורה החדש של פרטי הכניסה לאדמין, ואולי גם קובץ של בלוק כתובות IP.

  2. אם רלוונטי, מייבאים תמונות של מערכת הפעלה ל-vSphere ומעבירים בדחיפה תמונות של קונטיינרים למאגר פרטי. מריצים את gkectl prepare.

  3. ליצור אשכול אדמין. משתמשים ב-gkectl כדי ליצור אשכול אדמין חדש כמו שצוין בקובצי ההגדרות שהושלמו. כש-Google Distributed Cloud יוצר אשכול אדמין, הוא פורס אשכול Kubernetes in Docker ‏(kind) כדי לארח באופן זמני את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין. האוסף הזמני הזה נקרא אוסף bootstrap. אשכולות משתמשים נוצרים ומשודרגים על ידי האדמין המנהל שלהם ללא שימוש באשכול bootstrap.

  4. מוודאים שקלאסטר האדמין פועל. אפשר להשתמש ב-kubectl כדי להציג את צמתי האשכול.

בסוף התהליך הזה יהיה לכם אשכול אדמין פעיל שתוכלו להשתמש בו כדי ליצור ולנהל אשכולות משתמשים.

אם אתם משתמשים ב-VPC Service Controls, יכול להיות שיוצגו שגיאות כשמריצים פקודות מסוימות של gkectl, כמו "Validation Category: GCP - [UNKNOWN] GCP service: [Stackdriver] could not get GCP services". כדי להימנע מהשגיאות האלה, מוסיפים את הפרמטר --skip-validation-gcp לפקודות.

מילוי קובץ התצורה

  • מוודאים שבתחנת העבודה של האדמין מותקנת הגרסה הנדרשת של gkectl. בדרך כלל משתמשים באותה גרסה של gkectl כמו הגרסה שתשמש ליצירת האשכול. מציינים את גרסת האשכול בשדה gkeOnPremVersion בקובץ התצורה של האשכול. הכללים הבאים לגבי גרסאות נאכפים במהלך יצירת האשכול:

    • הגרסה המשנית gkectl לא יכולה להיות נמוכה מהגרסה המשנית של האשכול. לדוגמה, אסור ליצור אשכול בגרסה 1.30 באמצעות גרסה 1.29 של gkectl. גרסאות תיקון לא משנות. לדוגמה, אפשר להשתמש בגרסה gkectl 1.29.0-gke.1456 כדי ליצור אשכול עם גרסת תיקון גבוהה יותר, כמו 1.29.1000-gke.94.

    • הגרסה המשנית gkectl לא יכולה להיות גבוהה ביותר משתי גרסאות משניות מגרסת האשכול. לדוגמה, אם יוצרים אשכול 1.28, הגרסה gkectl יכולה להיות 1.29 או 1.30. אבל אי אפשר להשתמש בגרסה 1.31 של gkectl כי היא גבוהה בשלוש גרסאות משניות מהגרסה של האשכול.

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

אם השתמשתם ב-gkeadm כדי ליצור את תחנת העבודה של האדמין, נוצר קובץ הגדרות בשם admin-cluster.yaml.

אם לא השתמשתם ב-gkeadm כדי ליצור את תחנת העבודה של האדמין, צריך ליצור את admin-cluster.yaml על ידי הפעלת הפקודה הבאה בתחנת העבודה של האדמין:

gkectl create-config admin

קובץ התצורה הזה משמש ליצירת אשכול האדמין.

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

name

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

bundlePath

החבילה היא קובץ מכווץ שמכיל רכיבי אשכול. היא כלולה בתחנת העבודה של האדמין. השדה הזה כבר מלא בשבילכם.

vCenter

השדות בקטע הזה כבר מלאים בערכים שהזנתם כשבניתם את תחנת העבודה של האדמין.

enableAdvancedCluster

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

חשוב לשים לב להבדלים הבאים בין הגרסאות:

  • בגרסה 1.31, התכונה המתקדמת של אשכולות נמצאת בגרסת טרום-השקה:

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

    • אחרי שמפעילים אשכול מתקדם, אי אפשר לשדרג את האשכול לגרסה 1.32. מומלץ להפעיל את האשכול המתקדם רק בסביבת בדיקה.

  • בגרסה 1.32, התכונה המתקדמת של אשכולות זמינה לכולם (GA).

    • כברירת מחדל, אשכולות אדמין נוצרים כאשכולות מתקדמים. כדי ליצור אשכול לא מתקדם, צריך להגדיר את enableAdvancedCluster לערך false.

    • אפשר לשדרג אשכולות שהתכונה 'אשכולות מתקדמים' מופעלת בהם.

  • בגרסה 1.33 ואילך, כל האשכולות נוצרים כאשכולות מתקדמים. אם מגדירים את enableAdvancedCluster ל-false, יצירת האשכול נכשלת.

network

ממלאים את הקטע network.controlPlaneIPBlock ואת הקטע network.hostConfig. צריך גם להגדיר את adminMaster.replicas לערך 3.

השדות network.podCIDR ו-network.serviceCIDR מאוכלסים מראש בערכים שאפשר להשאיר ללא שינוי, אלא אם הם מתנגשים עם כתובות שכבר נמצאות בשימוש ברשת. ‫Kubernetes משתמש בטווחים האלה כדי להקצות כתובות IP לקבוצות Pod ולשירותים באשכול.

ממלאים את שאר השדות בקטע network של קובץ התצורה לפי הצורך.

loadBalancer

מגדירים כתובת VIP לשרת Kubernetes API של אשכול האדמין. מזינים את מספר ה-VIP כערך של loadBalancer.vips.controlPlaneVIP

מידע נוסף זמין במאמר בנושא כתובות IP וירטואליות ברשת המשנה של אשכול האדמין.

מחליטים באיזה סוג של איזון עומסים רוצים להשתמש. האפשרויות הן:

  • איזון עומסים בחבילה של MetalLB. מגדירים את loadBalancer.kind לערך "MetalLB".

  • איזון עומסים ידני. מגדירים את loadBalancer.kind ל-"ManualLB" ומסירים את הקטע manualLB.

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

antiAffinityGroups

מגדירים את antiAffinityGroups.enabled ל-true או ל-false בהתאם להעדפה שלכם.

בשדה הזה מציינים אם רוצים ש-Google Distributed Cloud ייצור כללי אנטי-אפיניות של Distributed Resource Scheduler‏ (DRS) של VMware עבור הצמתים של אשכול האדמין, כך שהם יפוזרו על פני לפחות שלושה מארחים פיזיים במרכז הנתונים.

adminMaster

אם רוצים לציין את המעבד והזיכרון של הצמתים במישור הבקרה של אשכול האדמין, ממלאים את השדות cpus ו-memoryMB בקטע adminMaster.

בקטרי אדמין חייבים להיות שלושה צמתים של מישור הבקרה. מגדירים את השדה replicas בקטע adminMaster לערך 3.

proxy

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

privateRegistry

מחליטים איפה רוצים לשמור את קובצי האימג' של הקונטיינרים לרכיבים של Google Distributed Cloud. האפשרויות הן:

  • Artifact Registry

  • מאגר Docker פרטי משלכם.

    אם אתם רוצים להשתמש במאגר פרטי משלכם, אתם צריכים למלא את הקטע privateRegistry.

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

componentAccessServiceAccountKeyPath

‫Google Distributed Cloud משתמש בחשבון השירות של רכיב הגישה כדי להוריד רכיבי אשכול מ-Artifact Registry. השדה הזה מכיל את הנתיב של קובץ מפתח JSON לחשבון השירות של רכיב הגישה.

השדה הזה כבר מלא בשבילכם.

gkeConnect

רושמים את אשכול האדמין ל Google Cloud Fleet על ידי מילוי הקטע gkeConnect. אם כוללים את הקטעים stackdriver ו-cloudAuditLogging בקובץ ההגדרות, המזהה ב-gkeConnect.projectID חייב להיות זהה למזהה שמוגדר ב-stackdriver.projectID וב-cloudAuditLogging.projectID. אם מזהי הפרויקטים לא זהים, יצירת האשכול תיכשל.

בגרסה 1.28 ואילך, אפשר לציין אזור שבו שירותי Fleet ו-Connect פועלים ב-gkeConnect.location. אם לא כוללים את השדה הזה, האשכול משתמש במופעים הגלובליים של השירותים האלה.

אם כוללים את gkeConnect.location, האזור שצוין צריך להיות זהה לאזור שהוגדר ב-cloudAuditLogging.clusterLocation, ב-stackdriver.clusterLocation וב-gkeOnPremAPI.location. אם האזורים לא זהים, יצירת האשכול תיכשל.

gkeOnPremAPI

אם GKE On-Prem API מופעל בפרויקטGoogle Cloud , כל האשכולות בפרויקט נרשמים ל-GKE On-Prem API באופן אוטומטי באזור שהוגדר ב-stackdriver.clusterLocation. האזור gkeOnPremAPI.location צריך להיות זהה לאזור שצוין בcloudAuditLogging.clusterLocation, ב-gkeConnect.location וב-stackdriver.clusterLocation. אם האזורים לא זהים, יצירת האשכול תיכשל.

  • אם רוצים לרשום את כל האשכולות בפרויקט ל-GKE On-Prem API, צריך לבצע את השלבים שבקטע לפני שמתחילים כדי להפעיל את GKE On-Prem API בפרויקט ולהשתמש בו.

  • אם אתם לא רוצים לרשום את האשכול ל-GKE On-Prem API, צריך לכלול את הקטע הזה ולהגדיר את gkeOnPremAPI.enabled ל-false. אם לא רוצים לרשום אף אשכול בפרויקט, צריך להשבית את gkeonprem.googleapis.com (שם השירות של GKE On-Prem API) בפרויקט. הוראות מפורטות מופיעות במאמר השבתת שירותים.

stackdriver

אם רוצים להפעיל את Cloud Logging ו-Cloud Monitoring עבור האשכול, צריך למלא את הקטע stackdriver.

חובה למלא את הקטע הזה כברירת מחדל. כלומר, אם לא ממלאים את הקטע הזה, צריך לכלול את האפשרות --skip-validation-stackdriver כשמריצים את gkectl create admin.

חשוב לשים לב לדרישות הבאות:

  • אם מפעילים אשכול מתקדם, צריך לציין את אותו נתיב ב-cloudAuditLogging.serviceAccountKeyPath וב-stackdriver.serviceAccountKeyPath.

  • המזהה ב-stackdriver.projectID צריך להיות זהה למזהה ב-gkeConnect.projectID וב-cloudAuditLogging.projectID.

  • האזור Google Cloud שמוגדר ב-stackdriver.clusterLocation חייב להיות זהה לאזור שמוגדר ב-cloudAuditLogging.clusterLocation וב-gkeConnect.location. בנוסף, אם gkeOnPremAPI.enabled הוא true, צריך להגדיר את אותו אזור ב-gkeOnPremAPI.location.

אם מזהי הפרויקט והאזורים לא זהים, יצירת האשכול תיכשל.

cloudAuditLogging

אם אתם רוצים לשלב את יומני הביקורת משרת Kubernetes API של האשכול עם יומני הביקורת של Cloud, אתם צריכים למלא את הקטע cloudAuditLogging.

חשוב לשים לב לדרישות הבאות:

  • אם מפעילים אשכול מתקדם, צריך לציין את אותה נתיב ב-cloudAuditLogging.serviceAccountKeyPath וב-stackdriver.serviceAccountKeyPath.

  • המזהה ב-cloudAuditLogging.projectID צריך להיות זהה למזהה ב-gkeConnect.projectID וב-stackdriver.projectID.

  • ה Google Cloud אזור שמוגדר ב-cloudAuditLogging.clusterLocation חייב להיות זהה לאזור שמוגדר ב-stackdriver.clusterLocation וב-gkeConnect.location (אם השדה כלול בקובץ ההגדרות). בנוסף, אם הערך של gkeOnPremAPI.enabled הוא true, צריך להגדיר את אותו אזור ב-gkeOnPremAPI.location.

אם מזהי הפרויקט והאזורים לא זהים, יצירת האשכול תיכשל.

clusterBackup

אם רוצים להפעיל גיבוי של אשכול האדמין, צריך להגדיר את clusterBackup.datastore למאגר הנתונים של vSphere שבו רוצים לשמור את הגיבויים של האשכול.

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

autoRepair

אם רוצים להפעיל תיקון אוטומטי של הצמתים באשכול האדמין, צריך להגדיר את autoRepair.enabled לערך true.

secretsEncryption

אם רוצים להפעיל את התכונה הצפנת סודות שפועלת תמיד, צריך למלא את הקטע secretsEncryption.

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

osImageType

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

אם מפעילים אשכול מתקדם, מגדירים את osImageType ל-ubuntu_cgroupv2 או ל-ubuntu_containerd.

דוגמה לקובצי תצורה מלאים

דוגמה לקובץ הגדרות של אשכול אדמין שמולא. ההגדרה מאפשרת חלק מהתכונות הזמינות, אבל לא את כולן.

vc-01-admin-cluster.yaml

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.28.0-gke.1-full.tgz"
vCenter:
  address: "vc01.example"
  datacenter: "vc-01"
  cluster: "vc01-workloads-1"
  resourcePool: "vc-01-pool-1"
  datastore: "vc01-datastore-1"
  caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem""
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
  controlPlaneIPBlock:
    netmask: "255.255.248.0"
    gateway: "21.0.143.254"
    ips:
    - ip: "21.0.140.226"
      hostname: "admin-cp-vm-1"
    - ip: "21.0.141.48"
      hostname: "admin-cp-vm-2"
    - ip: "21.0.141.65"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: true
adminMaster:
  cpus: 4
  memoryMB: 16384
  replicas: 3
componentAccessServiceAccountKeyPath: "sa-key.json"
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
  disableVsphereResourceMetrics: false
clusterBackup:
  datastore: "vc-01-datastore-bu"
autoRepair:
  enabled: true
osImageType: "ubuntu_containerd"

אימות קובץ ההגדרות

אחרי שממלאים את קובץ ההגדרות של אשכול האדמין, מריצים את הפקודה gkectl check-config כדי לוודא שהקובץ תקין:

gkectl check-config --config ADMIN_CLUSTER_CONFIG

מחליפים את ADMIN_CLUSTER_CONFIG בנתיב של קובץ ההגדרות של אשכול האדמין.

אם הפקודה מחזירה הודעות שגיאה, צריך לתקן את הבעיות ולאמת את הקובץ שוב.

כדי לדלג על תהליכי האימות הארוכים יותר, מעבירים את הדגל --fast. כדי לדלג על אימותים ספציפיים, משתמשים בדגלים --skip-validation-yyy. מידע נוסף על הפקודה check-config זמין במאמר הרצת בדיקות קדם-הפעלה.

קבלת קובצי אימג' של מערכת ההפעלה

מריצים את הפקודה gkectl prepare כדי לאתחל את סביבת vSphere:

gkectl prepare --config ADMIN_CLUSTER_CONFIG

הפקודה gkectl prepare מבצעת את משימות ההכנה הבאות:

  • מייבא תמונות של מערכות הפעלה ל-vSphere ומסמן אותן כתבניות של מכונות וירטואליות.

  • אם אתם משתמשים במאגר Docker פרטי, קובצי האימג' של הקונטיינרים מועברים בדחיפה למאגר שלכם.

  • אופציונלי: אימות של הצהרות ה-build של קובצי האימג' בקונטיינר, כדי לוודא שהקובצים נוצרו ונחתמו על ידי Google ושהם מוכנים לפריסה.

אם הגדרתם את bundlePath לשימוש בחבילה מלאה, gkectl prepare משתמש בקובצי האימג' של מערכת ההפעלה והקונטיינר שכלולים בחבילה, בלי להוריד אותם מרשתות חיצוניות. מומלץ להשתמש באפשרות הזו בסביבות שבהן יש שרת proxy איטי או גישה מוגבלת לאינטרנט. מידע נוסף זמין במאמר מידע על חבילות Google Distributed Cloud.

יצירת אשכול האדמין

יוצרים את אשכול האדמין:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

אם אתם משתמשים ב-VPC Service Controls, יכול להיות שיוצגו שגיאות כשמריצים פקודות מסוימות של gkectl, כמו "Validation Category: GCP - [UNKNOWN] GCP service: [Stackdriver] could not get GCP services". כדי להימנע מהשגיאות האלה, מוסיפים את הפרמטר --skip-validation-gcp לפקודות.

המשך יצירה של אשכול האדמין אחרי כשל

אם יצירת אשכול האדמין נכשלת או מבוטלת, אפשר להריץ שוב את הפקודה create:

gkectl create admin --config ADMIN_CLUSTER_CONFIG

איתור קובץ ה-kubeconfig של אשכול האדמין

הפקודה gkectl create admin יוצרת קובץ kubeconfig בשם kubeconfig בספרייה הנוכחית. תצטרכו את קובץ ה-kubeconfig הזה בהמשך כדי לבצע אינטראקציה עם אשכול האדמין.

קובץ ה-kubeconfig מכיל את השם של אשכול האדמין. כדי לראות את שם האשכול, אפשר להריץ את הפקודה:

kubectl config get-clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG

בפלט מוצג שם האשכול. לדוגמה:

NAME
gke-admin-tqk8x

אם רוצים, אפשר לשנות את השם והמיקום של קובץ ה-kubeconfig.

ניהול הקובץ checkpoint.yaml

הקטע הזה רלוונטי רק לאשכולות אדמין שאינם HA. קובץ checkpoint.yaml לא משמש ליצירת אשכולות אדמין של HA.

כשמריצים את הפקודה gkectl create admin כדי ליצור את אשכול האדמין, נוצר קובץ של נקודת ביקורת באותה תיקיית מאגר נתונים שבה נמצא דיסק הנתונים של אשכול האדמין. כברירת מחדל, שם הקובץ הוא DATA_DISK_NAME‑checkpoint.yaml. אם האורך של DATA_DISK_NAME גדול מ-245 תווים או שווה לו, השם הוא DATA_DISK_NAME.yaml, בגלל המגבלה של vSphere על אורך שם הקובץ.

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

אם הפעלתם הצפנה של מכונות וירטואליות במופע של vCenter Server, אתם צריכים לקבל את ההרשאה Cryptographic operations.Direct Access לפני שאתם יוצרים או משדרגים את אשכול האדמין. אחרת, נקודת הביקורת לא תועלה. אם אין לכם את ההרשאה הזו, תוכלו להשבית את ההעלאה של קובץ נקודת הבדיקה באמצעות הדגל המוסתר --disable-checkpoint כשאתם מריצים פקודה רלוונטית.

הקובץ checkpoint.yaml מתעדכן אוטומטית כשמריצים את הפקודה gkectl upgrade admin או כשמריצים פקודה gkectl update שמשפיעה על אשכול האדמין.

איך מוודאים שקלאסטר האדמין פועל

מוודאים שקלאסטר האדמין פועל:

kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG

מחליפים את ADMIN_CLUSTER_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   ...

גיבוי קבצים

מומלץ לגבות את קובץ ה-kubeconfig של אשכול האדמין. כלומר, מעתיקים את קובץ ה-kubeconfig מתחנת העבודה של האדמין למיקום אחר. גם אם תאבדו את הגישה לתחנת העבודה של האדמין, או אם קובץ ה-kubeconfig בתחנת העבודה של האדמין יימחק בטעות, עדיין תהיה לכם גישה לאשכול האדמין.

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

מחולצים את מפתח ה-SSH מאשכול האדמין לקובץ בשם admin-cluster-ssh-key:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secrets -n kube-system sshkeys \
    -o jsonpath='{.data.vsphere_tmp}' | base64 -d > admin-cluster-ssh-key

עכשיו אפשר לגבות את admin-cluster-ssh-key למיקום אחר שתבחרו.

מדיניות RBAC

כשממלאים את הקטע gkeConnect בקובץ התצורה של אשכול האדמין, האשכול נרשם לFleet במהלך היצירה או העדכון. כדי להפעיל את הפונקציונליות של ניהול צי, Google Cloud מבצעים פריסה של סוכן Connect ויוצרים חשבון שירות של Google שמייצג את הפרויקט שבו האשכול רשום. סוכן Connect יוצר חיבור לחשבון השירות כדי לטפל בבקשות לשרת Kubernetes API של האשכול. הגישה הזו מאפשרת להשתמש בתכונות של ניהול אשכולות ועומסי עבודה ב- Google Cloud, כולל גישה לGoogle Cloud מסוף שמאפשר אינטראקציה עם האשכול.

שרת ה-API של Kubernetes באשכול האדמין צריך להיות מסוגל לאשר בקשות מסוכן Connect. כדי לוודא זאת, מוגדרות בחשבון השירות מדיניות בקרת הגישה לפי תפקידים (RBAC) הבאות:

  • מדיניות התחזות שמאשרת לסוכן Connect לשלוח בקשות לשרת Kubernetes API בשם חשבון השירות.

  • מדיניות הרשאות שמציינת את הפעולות שמותרות במשאבי Kubernetes אחרים.

חשבון השירות ומדיניות RBAC נדרשים כדי שתוכלו לנהל את מחזור החיים של אשכולות המשתמשים במסוף Google Cloud .