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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 באמצעות gkectl בגרסה 1.29. גרסאות התיקון לא משנות. לדוגמה, אתם יכולים להשתמש בגרסה 1.29.0-gke.1456 של gkectl כדי ליצור אשכול עם גרסת תיקון גבוהה יותר, כמו 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

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

vCenter

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

enableAdvancedCluster

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

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

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

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

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

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

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

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

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

network

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

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

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

loadBalancer

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

למידע נוסף, ראו כתובות VIP ברשת המשנה של אשכול האדמין.

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

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

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

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

antiAffinityGroups

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

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

adminMaster

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

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

proxy

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

privateRegistry

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

  • Artifact Registry

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

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

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

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

אם אתם רוצים לשלב את יומני הביקורת משרת ה-API של Kubernetes באשכול עם יומני הביקורת של 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 datastore שבו רוצים לשמור את הגיבויים של האשכול.

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

autoRepair

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

secretsEncryption

אם רוצים להפעיל את הצפנה של Secrets בזמינות תמידית, ממלאים את הקטע 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"
enableAdvancedCluster: true
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"
  folder: "vc01-folder-1"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: static
    ipBlockFilePath: network.hostconfig
  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"
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
  disableVsphereResourceMetrics: false
cloudAuditLogging:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
autoRepair:
  enabled: true
osImageType: "ubuntu_cgv2"

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

אחרי שממלאים את קובץ התצורה של אשכול האדמין, מריצים את הפקודה 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 תווים או יותר, בגלל המגבלה של vSphere על אורך שם הקובץ, השם הוא DATA_DISK_NAME.yaml.

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

אם הפעלתם הצפנת VM במופע של 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 בקובץ התצורה של אשכול האדמין, האשכול נרשם בצי במהלך היצירה או העדכון. כדי להפעיל את פונקציונליות ניהול הצי, Google Cloud פורס את סוכן Connect ויוצר חשבון שירות של Google שמייצג את הפרויקט שאליו רשום האשכול. סוכן Connect יוצר חיבור עם חשבון השירות כדי לטפל בבקשות לשרת ה-API של Kubernetes באשכול. כך אפשר לגשת לתכונות של ניהול אשכולות ועומסי עבודה ב- Google Cloud, כולל גישה למסוףGoogle Cloud , שמאפשר לכם לנהל את האשכול.

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

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

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

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