בדף הזה מוסבר איך ליצור אשכול אדמין ל-Google Distributed Cloud. קלאסטר האדמין מנהל את קלאסטרים המשתמשים שמריצים את עומסי העבודה. אם רוצים להשתמש בדומיינים של טופולוגיה, אפשר לעיין במאמר יצירת אשכול אדמין לשימוש עם דומיינים של טופולוגיה.
הדף הזה מיועד לאדמינים, לארכיטקטים ולמפעילים שמגדירים, מנטרים ומנהלים את התשתית הטכנולוגית. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן זמין במאמר תפקידים נפוצים של משתמשים ומשימות ב-GKE. Google Cloud
פרטים נוספים על אשכול האדמין מופיעים במאמר סקירה כללית על ההתקנה.
בגרסה 1.33 ואילך, כל האשכולות החדשים נוצרים כאשכולות מתקדמים. חשוב לעיין במאמר ההבדלים בהפעלת אשכולות מתקדמים.
לפני שמתחילים
חשוב לוודא שהגדרתם את תחנת העבודה של האדמין ושאתם יכולים להיכנס אליה כמו שמתואר במאמר יצירת תחנת עבודה לאדמין.
מוודאים שקובצי ה-JSON של המפתחות של חשבונות השירות נמצאים בתחנת העבודה של האדמין.
מעיינים במסמך התכנון של כתובות ה-IP. מוודאים שיש מספיק כתובות IP זמינות לשלושת הצמתים של רמת הבקרה ולכתובת ה-IP הווירטואלית של רמת הבקרה. אם אתם מתכננים ליצור אשכולות משתמשים מסוג kubeception, אתם צריכים לוודא שיש לכם מספיק כתובות IP זמינות לצמתים של מישור הבקרה באשכולות המשתמשים האלה.
כדאי לעיין בסקירה הכללית על איזון עומסים ולשקול מחדש את ההחלטה לגבי סוג מאזן העומסים שבו רוצים להשתמש. במאזני עומסים שמוגדרים באופן ידני, צריך להגדיר את מאזן העומסים לפני שיוצרים את אשכול האדמין.
אם אתם משתמשים ב-
gkectlכדי ליצור את אשכול האדמין, אתם צריכים להחליט אם אתם רוצים להשתמש במאגר ציבורי או פרטי לרכיבי Google Distributed Cloud. מידע על שימוש במאגר פרטי של Docker זמין במאמרprivateRegistry. אי אפשר להשתמש ב-Terraform או במסוף Google Cloud כדי להגדיר רכיבי מערכת במאגר Docker פרטי.מחליטים איזה סוג של מערכת הפעלה רוצים להפעיל בצמתים של אשכול האדמין.
אם הארגון שלכם דורש שתעבורת נתונים יוצאת תעבור דרך שרת proxy, הקפידו להוסיף לרשימת ההיתרים את כתובת ה-API הנדרשת ואת כתובת Artifact Registry.
בגרסה 1.29 ומעלה, בדיקות מקדימות בצד השרת מופעלות כברירת מחדל. בדיקות קדם-הפעלה בצד השרת דורשות כללי חומת אש נוספים. בקטע Firewall rules for admin clusters (כללי חומת אש לאשכולות אדמין), מחפשים את האפשרות Preflight checks (בדיקות לפני המראה) ומוודאים שכל כללי חומת האש הנדרשים מוגדרים. בדיקות מקדימות בצד השרת מופעלות באשכול bootstrap במקום באופן מקומי בתחנת העבודה של האדמין.
יצירת אשכול אדמין באמצעות הכלי שבחרתם
בקטע הזה מוסבר איך ליצור אשכול אדמין באמצעות gkectl, Terraform ומסוף Google Cloud . מידע שיעזור לכם לבחור כלי ומגבלות של חלק מהכלים מופיע במאמר בחירת כלי לניהול מחזור החיים של אשכול.
gkectl
סקירה כללית של התהליך
אלה השלבים העיקריים שנדרשים ליצירת אשכול אדמין:
- ממלאים את קובצי התצורה.
- ממלאים ומאמתים קובץ תצורה של אשכול אדמין, קובץ הגדרות של פרטי כניסה ואולי גם קובץ של בלוק IP, כדי לציין את הפרטים של אשכול האדמין החדש.
- מייבאים קובצי אימג' של מערכת הפעלה אל vSphere, ומעבירים בדחיפה קובצי אימג' של קונטיינרים אל המאגר הפרטי, אם רלוונטי.
- מריצים את
gkectl prepare.
- יוצרים אשכול אדמין.
- משתמשים ב-
gkectlכדי ליצור אשכול אדמין חדש כמו שצוין בקובצי ההגדרות שהושלמו. כש-Google Distributed Cloud יוצר אשכול אדמין, הוא פורס אשכול Kubernetes in Docker (kind) כדי לארח באופן זמני את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין. האוסף הזמני הזה נקרא אוסף bootstrap. אשכולות משתמשים נוצרים ומשודרגים על ידי האדמין המנהל שלהם ללא שימוש באשכול bootstrap.
- מוודאים שקלאסטר האדמין פועל.
- משתמשים ב-
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. אין חשיבות לגרסאות התיקון. לדוגמה, אפשר להשתמש בגרסהgkectl1.29.0-gke.1456 כדי ליצור אשכול עם גרסת תיקון גבוהה יותר, כמו 1.29.1000-gke.94.הגרסה המשנית
gkectlלא יכולה להיות גבוהה ביותר משתי גרסאות משניות מגרסת האשכול. לדוגמה, אם יוצרים אשכול בגרסה 1.28, הגרסה שלgkectlיכולה להיות 1.29 או 1.30. אבל אי אפשר להשתמש בגרסהgkectl1.31 כי היא גבוהה בשלוש גרסאות משניות מהגרסה של האשכול.
במקרה הצורך, אפשר לעיין במאמר בנושא הורדה של
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 צי על ידי מילוי הקטע 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.האזור שמוגדר ב-
stackdriver.clusterLocationצריך להיות זהה לאזור שמוגדר ב-cloudAuditLogging.clusterLocationוב-gkeConnect.location. Google Cloud בנוסף, אם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-xxx. מידע נוסף על הפקודה check-config זמין במאמר הרצת בדיקות קדם-הפעלה.
קבלת קובצי אימג' של מערכת ההפעלה
מריצים את הפקודה gkectl prepare כדי לאתחל את סביבת vSphere:
gkectl prepare --config ADMIN_CLUSTER_CONFIG
הפקודה gkectl prepare מבצעת את משימות ההכנה הבאות:
מייבא תמונות של מערכת הפעלה ל-vSphere ומסמן אותן כתבניות של מכונות וירטואליות.
אם אתם משתמשים במאגר Docker פרטי, קובצי האימג' של הקונטיינרים מועברים בדחיפה למאגר שלכם.
אופציונלי: אימות של הצהרות ה-build של קובצי האימג' בקונטיינר, כדי לוודא שהקובצים נוצרו ונחתמו על ידי Google ושהם מוכנים לפריסה.
יצירת אשכול האדמין
יוצרים את אשכול האדמין:
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 לא משמש ליצירה של אשכולות אדמין עם זמינות גבוהה.
כשמריצים את הפקודה 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 בקובץ התצורה של אשכול האדמין, האשכול נרשם לצי במהלך היצירה או העדכון. כדי להפעיל את הפונקציונליות של ניהול צי, Google Cloud הכלי פורס את סוכן Connect ויוצר חשבון שירות של Google שמייצג את הפרויקט שהאשכול רשום בו.
סוכן Connect יוצר חיבור לחשבון השירות כדי לטפל בבקשות לשרת Kubernetes API של האשכול. הגישה הזו מאפשרת שימוש בתכונות של ניהול אשכולות ועומסי עבודה ב- Google Cloud, כולל גישה לGoogle Cloud מסוף שמאפשר אינטראקציה עם האשכול.
שרת ה-API של Kubernetes באשכול האדמין צריך להיות מסוגל לאשר בקשות מסוכן Connect. כדי לוודא זאת, מוגדרות בחשבון השירות מדיניות בקרת הגישה מבוססת-תפקידים (RBAC) הבאה:
מדיניות התחזות שמאשרת לסוכן Connect לשלוח בקשות לשרת Kubernetes API בשם חשבון השירות.
מדיניות הרשאות שמציינת את הפעולות שמותרות במשאבי Kubernetes אחרים.
חשבון השירות ומדיניות RBAC נדרשים כדי שתוכלו לנהל את מחזור החיים של אשכולות המשתמשים במסוף Google Cloud .
Terraform
סקירה כללית של התהליך
לפני שיוצרים את אשכול האדמין, צריך להריץ את הפקודה gkectl register bootstrap בתחנת העבודה של האדמין. הפקודה הזו פורסת אשכול Kubernetes ב-Docker (kind) בתחנת העבודה של האדמין. באשכול האתחול הזה מתארחים בקרי Kubernetes שנדרשים ליצירת אשכול האדמין. כשיוצרים את אשכול האדמין, הבקרים באשכול ה-bootstrap יקצו צמתים, יריצו בדיקות קדם-הפעלה וירשמו את אשכול האדמין ב-Fleet. אחרי שיוצרים את אשכול האדמין, אשכול האתחול נמחק אוטומטית.
אלה השלבים ברמה גבוהה ליצירת אשכול אדמין באמצעות Terraform:
- ממלאים את קובץ התצורה.
- משתמשים במשאב google_gkeonprem_vmware_admin_cluster ובדוגמה שבהמשך כדי ליצור את קובץ התצורה
main.tf.
- יוצרים אשכול
bootstrap. - מריצים את הפקודה
gkectl register bootstrapכדי ליצור את אשכול האתחול. כשהפקודה מסיימת ליצור את אשכול האתחול, הפלט מודיע לכם שצריך לסיים את ההגדרה של אשכול האדמין. התהליך ממשיך לפעול עד שנוצר אשכול האדמין.
- יוצרים אשכול
- יוצרים אשכול אדמין.
- בחלון מסוף אחר או במחשב אחר שיש לו גישה ל-GKE On-Prem API, מריצים פקודות
terraformכדי ליצור אשכול אדמין חדש כמו שצוין בקובץ התצורהmain.tfשהושלם.
מילוי קובץ התצורה
בדוגמה הבאה מוצג תהליך יצירה של אשכול אדמין עם זמינות גבוהה (HA) ושלושה צמתי מישור בקרה באמצעות MetalLB. בגרסה 1.28 ואילך, אשכולות אדמין חדשים צריכים להיות בעלי זמינות גבוהה. בגלל הדרישה הזו, אתם צריכים להגדיר את control_plane_node.replicas ל-3.
מידע נוסף ודוגמאות נוספות מופיעים במאמרי העזרה בנושא google_gkeonprem_vmware_admin_cluster. מידע על שימוש במאגר פרטי לתמונות מערכת זמין במאמר בנושא הגדרת מאגר פרטי של קונטיינרים.
ממלאים את משתני ה-placeholder בדוגמה הבאה, ואז מעתיקים ומדביקים אותה אל main.tf. אם השתמשתם ב-gkeadm כדי ליצור את תחנת העבודה של האדמין, פותחים את קובץ התצורה של תחנת העבודה של האדמין כדי להעתיק ערכים מהקטע vCenter למשתני ה-placeholder המתאימים.
resource "google_gkeonprem_vmware_admin_cluster" "admin-cluster-metallb" {
provider = google-beta
name = "ADMIN_CLUSTER_NAME"
project = "PROJECT_ID"
location = "REGION"
description = "DESCRIPTION"
bootstrap_cluster_membership = "projects/PROJECT_ID/locations/REGION/memberships/bootstrap-ADMIN_CLUSTER_NAME"
on_prem_version = "VERSION"
image_type = "IMAGE_TYPE"
vcenter {
address = "VCENTER_ADDRESS"
datacenter = "DATA_CENTER"
cluster = "VCENTER_CLUSTER"
resource_pool = "RESOURCE_POOL"
datastore = "DATASTORE"
ca_cert_data = "CA_CERT_DATA"
}
network_config {
service_address_cidr_blocks = ["10.96.232.0/24"]
pod_address_cidr_blocks = ["192.168.0.0/16"]
vcenter_network = "NETWORK"
dhcp_ip_config {
enabled = true
}
host_config {
dns_servers = ["DNS_SERVERS"]
ntp_servers = ["NTP_SERVERS"]
}
ha_control_plane_config {
control_plane_ip_block {
gateway = "GATEWAY"
netmask = "NETMASK"
ips {
hostname = "CONTROL_PLANE_HOST_1"
ip = "CONTROL_PLANE_NODE_IP_1"
}
ips {
hostname = "CONTROL_PLANE_HOST_2"
ip = "CONTROL_PLANE_NODE_IP_2"
}
ips {
hostname = "CONTROL_PLANE_HOST_3"
ip = "CONTROL_PLANE_NODE_IP_3"
}
}
}
}
control_plane_node {
cpus = NUM_CPUS
memory = MEMORY
replicas = 3
}
load_balancer {
vip_config {
control_plane_vip = "CONTROL_PLANE_VIP"
}
metal_lb_config {
enabled = true
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_NAME: השם של אשכול האדמין. האורך המקסימלי של השם הוא 20 תווים.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
REGION: האזור שבו פועלים GKE On-Prem API (gkeonprem.googleapis.com), שירות Fleet (gkehub.googleapis.com) ושירות Connect (gkeconnect.googleapis.com). Google Cloud מצייניםus-west1או אזור נתמך אחר.השדה
locationתואם לדגל--locationבפקודהgkectl register bootstrap.
DESCRIPTION: תיאור של אשכול האדמין.
VERSION: הגרסה של Google Distributed Cloud עבור האשכול. אפשר ליצור אשכול באמצעות Terraform רק בגרסאות 1.28 ומעלה. הגרסה שמציינים כאן צריכה להיות זהה לגרסת החבילה שמציינים בדגל--bundle-pathבפקודהgkectl register bootstrap. רשימת הגרסאות זמינה במאמר גרסאות של Google Distributed Cloud.
IMAGE_TYPE: סוג תמונת מערכת ההפעלה שרוצים להריץ בצמתים של אשכול האדמין. מציינים אחד מהערכים הבאים: "ubuntu_containerd", "cos", "ubuntu_cgv2" או "cos_cgv2".
VCENTER_ADDRESS: הכתובת של vCenter Server.קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.credentials.address.השדה
vcenter.addressתואם לדגל--vcenter-addressבפקודהgkectl register bootstrap.
DATA_CENTER: השם של מרכז הנתונים של vCenter.קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.datacenter.השדה
vcenter.datacenterתואם לדגל--vcenter-datacenterבפקודהgkectl register bootstrap.
VCENTER_CLUSTER: השם של אוסף השרתים של vCenter.קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.cluster.השדה
vcenter.clusterתואם לדגל--vcenter-clusterבפקודהgkectl register bootstrap.
RESOURCE_POOL: השם או הנתיב של מאגר המשאבים של vCenter.קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.resourcePool.השדה
vcenter.resource_poolתואם לדגל--vcenter-resource-poolבפקודהgkectl register bootstrap.
DATASTORE: השם של מאגר הנתונים של vCenter. הערך שאתם מציינים צריך להיות שם, ולא נתיב. אם צריך להזין נתיב, מוסיפים את השדה הבא:folder = "FOLDER"קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.datastore.השדה
vcenter.datastoreתואם לדגל--vcenter-datastoreבפקודהgkectl register bootstrap.
אם רוצים להשתמש במדיניות אחסון של מכונה וירטואלית לצמתים של האשכול, צריך להסיר את השדה
vcenter.datastoreולהוסיף במקומו אתvcenter.storage_policy_name. בנוסף, מוסיפים את הדגל--vcenter-storage-policyלפקודהgkectl register bootstrap. חובה לציין ערך למאפייןvcenter.datastoreאו למאפייןvcenter.storage_policy_name, אבל לא לשניהם.
FOLDER: השם של תיקיית vCenter שבה ימוקמו מכונות ה-VM של האשכול. אם לא משתמשים בתיקייה, מסירים את השדה הזה.קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.folder.השדה
vcenter.folderתואם לדגל--vcenter-folderבפקודהgkectl register bootstrap.
CA_CERT_DATA: אישור ה-CA של vCenter בפורמט PEM, אבל עם כל השורות החדשות שהוחלפו במחרוזת\n.מריצים את הפקודה הבאה כדי להחליף את השורות החדשות ב-
\n:awk 'ORS="\\n" {print}' CA_CERT_PATH_LOCALמחליפים את
CA_CERT_PATH_LOCALבנתיב אל אישור ה-CA הבסיסי של vCenter Server. אם השתמשתם ב-gkeadmכדי ליצור את תחנת העבודה של האדמין, תוכלו להשתמש בערך מהשדהcaCertPathבקובץ התצורה של תחנת העבודה של האדמין, שהוא הנתיב במחשב המקומי.gkeadmהעתקתם את קובץ אישור CA לתחנת העבודה של האדמין. צריך לציין את הנתיב של תחנת העבודה של האדמין בדגל--vcenter-ca-cert-pathבפקודהgkectl register bootstrap.מעתיקים את הפלט של הפקודה הקודמת ומדביקים אותו במשתנה
CA_CERT_DATAשל placeholder.
NETWORK: השם של רשת vCenter.קובץ ההגדרה של תחנת העבודה של האדמין: משתמשים בערך מהשדה
vCenter.network.השדה
network_config.vcenter_networkתואם לדגל--vcenter-networkבפקודהgkectl register bootstrap.
GATEWAY: כתובת ה-IP של שער ברירת המחדל של רשת המשנה שכוללת את הצמתים של אשכול מישור הבקרה.
NETMASK: מסכת הרשת של תת-הרשת שכוללת את צמתי האשכול של מישור הבקרה.
DNS_SERVERS: כתובת ה-IP של שרת ה-DNS.
NTP_SERVERS: כתובת ה-IP של שרת הזמן (NTP).מזינים את כתובות ה-IP ואת שם המארח (אופציונלי) של שלושת הצמתים של מישור הבקרה בקטע
control_plane_ip_block.ips. אם לא מזינים שם מארח, צריך להסיר את השדותhostnameמההגדרה.
NUM_CPUS: מספר ליבות ה-vCPU לכל צומת במישור הבקרה באשכול האדמין. הערך חייב להיות לפחות 4.
MEMORY: מספר המביבייט של הזיכרון לכל צומת במישור הבקרה באשכול האדמין. הערך המינימלי הוא 8,192, אבל מומלץ להשתמש בערך 16,384.
CONTROL_PLANE_VIP: כתובת ה-IP שבחרתם להגדיר במאזן העומסים עבור שרת Kubernetes API של אשכול האדמין.
אופציונלי: הגדרת מאגר פרטי
כברירת מחדל, במהלך יצירה או שדרוג של אשכול, Google Distributed Cloud מושך תמונות מערכת מ-gcr.io/gke-on-prem-release באמצעות חשבון השירות של רכיב הגישה.
אופציונלי: אתם יכולים לספק שרת רישום קונטיינרים משלכם, כדי שתמונות המערכת יימשכו משרת הרישום הפרטי שלכם במקום זאת.
כדי להגדיר מאגר פרטי:
מוסיפים את השורות הבאות לקובץ התצורה של אשכול הניהול:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }מחליפים את מה שכתוב בשדות הבאים:
ADDRESS: כתובת ה-IP או שם הדומיין המוגדר במלואו (FQDN) של המכונה שמריצה את המאגר הפרטי.
CA_CERT: נתוני אישור ה-CA של המפתח הציבורי, אבל כל השורות החדשות מוחלפות במחרוזת\n.
מריצים את הפקודה הבאה כדי להחליף את השורות החדשות ב-
\n:awk 'ORS="\\n" {print}' PUBLIC_KEY_PATHמחליפים את
PUBLIC_KEY_PATHבנתיב של המפתח הציבורי.מעתיקים את הפלט של הפקודה הקודמת ומדביקים אותו במשתנה
CA_CERTשל placeholder.
אם הרשת שלכם נמצאת מאחורי שרת proxy, צריך להוסיף את הפרטים הבאים:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }מחליפים את מה שכתוב בשדות הבאים:
PROXY_SERVER_ADDRESS: כתובת ה-HTTP של שרת ה-Proxy. צריך לכלול את מספר היציאה גם אם הוא זהה ליציאת ברירת המחדל של הסכימה.
BYPASS_LIST: רשימה מופרדת בפסיקים של כתובות IP, טווחי כתובות IP, שמות מארחים ושמות דומיינים שלא צריכים לעבור דרך שרת ה-proxy.
דוגמה:
url: "http://my-proxy.example.local:80" no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"כש-Google Distributed Cloud שולח בקשה לאחת מהכתובות, המארחים או הדומיינים האלה, הבקשה עוקפת את שרת ה-proxy ונשלחת ישירות ליעד.
מידע נוסף על שימוש במאגר פרטי, כולל ההבדלים בין אשכולות רגילים לאשכולות מתקדמים, זמין במאמר הגדרת מאגר פרטי של קונטיינרים.
אימות קובץ התצורה והתוכנית
בספרייה שבה נמצא main.tf, מריצים את הפקודות הבאות:
מאתחלים את Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו ספק Google Cloud . אם צריך, מתקנים את השגיאות ב
maint.tf.יוצרים את התוכנית ב-Terraform:
terraform plan -out tfplanבודקים את ההגדרות ומבצעים שינויים לפי הצורך.
לפני שמחילים את התוכנית, צריך קודם ליצור את אשכול ה-bootstrap כמו שמתואר בקטע הבא.
יצירת אשכול האתחול
כשמריצים את הפקודה gkectl register bootstrap, מוצגת בקשה להזין את שם המשתמש והסיסמה של חשבון vCenter. חשוב לוודא שיש לכם את פרטי הכניסה. אם השתמשתם ב-gkeadm כדי ליצור את תחנת העבודה של האדמין, שם המשתמש והסיסמה נמצאים בקובץ credential.yaml.
מתחברים לתחנת העבודה של האדמין באמצעות SSH.
כדי לאמת עם Google Cloud CLI:
gcloud auth login
מריצים את הפקודה הבאה כדי ליצור את אשכול האתחול. הרבה ערכים של דגלים זהים לאלה שבשדות
main.tf. עם זאת, שימו לב שהפקודה מקבלת ערכים נוספים שצריך לציין במשתני ה-placeholder שסופקו.gkectl register bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --vcenter-address=VCENTER_ADDRESS \ --vcenter-datacenter=DATA_CENTER \ --vcenter-cluster=VCENTER_CLUSTER \ --vcenter-resource-pool=RESOURCE_POOL \ --vcenter-datastore=DATASTORE \ --vcenter-network=NETWORK \ --vcenter-ca-cert-path=CA_CERT_PATH \ --bundle-path=BUNDLE_PATH \ --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \ --stackdriver-service-account-key-path=LOG_MON_SA_PATH \ --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \ --admin-kubeconfig-out=KUBECONFIG_NAMEמחליפים את הנתיבים הבאים בנתיבים של תחנת העבודה של האדמין:
-
CA_CERT_PATH: הנתיב לאישור CA הבסיסי של vCenter Server. -
BUNDLE_PATH: הנתיב לקובץ החבילה. אם השתמשתם ב-gkeadmכדי ליצור את תחנת העבודה לאדמין, קובץ החבילה נמצא ב-/var/lib/gke/bundles/. שם הקובץ תלוי בגרסה של Google Distributed Cloud, לדוגמה,gke-onprem-vsphere-1.31.0-gke.889-full.tgz. -
COMPONENT_ACCESS_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות של רכיב הגישה. -
CONNECT_REGISTER_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות connect-register. -
LOG_MON_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות של שירות הרישום ביומן והמעקב. -
CLOUD_AUDIT_SA_PATH: הנתיב לחשבון השירות של יומן הביקורת. אם לא יצרתם חשבון שירות לרישום ביומן ביקורת, מציינים את הנתיב לקובץ המפתח של חשבון השירות של שירות הרישום ביומן והמעקב. -
KUBECONFIG_NAME: השם של קובץ ה-kubeconfig שנוצר באמצעות הפקודהgkectl register bootstrap. אם לא מציינים את הדגל הזה, הפקודה יוצרת את הקובץ בשםkubeconfigבספריית העבודה הנוכחית. אם קיים קובץ בשםkubeconfig, הפקודה מחליפה את הקובץ.
משנים את הפקודה לפי הצורך עבור הדגלים הבאים:
- אם ציינתם תיקייה ב-
main.tf, מוסיפים את הדגל הבא:--vcenter-folder=FOLDER - אם ציינתם מדיניות אחסון של מכונה וירטואלית ב-
main.tf, מסירים את--vcenter-datastoreומוסיפים את הדגל הבא:--vcenter-storage-policy-name=STORAGE_POLICY_NAME אם תחנת העבודה של האדמין תהיה ברשת שמוגנת על ידי שרת proxy, צריך להוסיף את הדגלים הבאים:
--proxy-url=PROXY_URL--no-proxy=NO_PROXY
מחליפים את מה שכתוב בשדות הבאים:
- PROXY_URL: כתובת ה-URL של שרת ה-Proxy.
- NO_PROXY: הערך של הדומיינים וכתובות ה-IP שמוחרגים מהפעלת ה-Proxy, מופרדים בפסיק.
אם מוסיפים דגל, צריך לוודא שמוסיפים את התו של קו נטוי הפוך (\) להמשך שורת הפקודה.
-
כשמתבקשים, מזינים (או מעתיקים ומדביקים) את שם המשתמש ב-vCenter. שם המשתמש לא מוצג במסך.
כשמתבקשים, מזינים (או מעתיקים ומדביקים) את הסיסמה של vCenter. הסיסמה לא מוצגת במסך.
הפקודה מריצה מספר רב של אימותים. אחרי ש-gkectl יוצר את אשכול האתחול, מוצג פלט שדומה לזה (הפלט קוצר כדי שיהיה קל יותר לקרוא אותו):
Running workstation validations
- Validation Category: Workstation
- [SUCCESS] Workstation OS
- [SUCCESS] Workstation Hardware
- [SUCCESS] Workstation Package
- [SUCCESS] Workstation NTP
- [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -
התהליך ממשיך לפעול עד שנוצר אשכול האדמין.
אם יוצאים מהפקודה gkectl register bootstrap לפני שנוצר אשכול האדמין, יצירת אשכול האדמין נכשלת וצריך למחוק את אשכול האתחול באמצעות הפקודה הבאה:
gkectl delete bootstrap \
--target-cluster-name=ADMIN_CLUSTER_NAME \
--project-id=PROJECT_ID \
--location=REGION \
--register-service-account-key-path=CONNECT_REGISTER_SA_PATH
יצירת אשכול האדמין
מחילים את תוכנית Terraform כדי ליצור את אשכול האדמין:
terraform apply "tfplan"
יצירת אשכול האדמין נמשכת כ-15 דקות או יותר. אפשר לראות את האשכול במסוף Google Cloud בדף GKE clusters.
חיבור לאשכול הניהול
הפקודה gkectl register bootstrap יוצרת קובץ kubeconfig עבור אשכול האדמין בתחנת העבודה של האדמין. אם לא ציינתם את הדגל --admin-kubeconfig-out כשביצעתם את הפקודה gkectl register bootstrap, הפקודה יוצרת קובץ kubeconfig בשם kubeconfig בספרייה שבה הפעלתם את הפקודה.
צריך להגביל את הגישה אל kubeconfig כי הוא מכיל פרטי אימות של האשכול.
בנוסף, אפשר להריץ פקודות של kubectl לקריאה בלבד דרך שער החיבור.
מריצים את הפקודה הבאה במחשב שמותקן בו ה-CLI של gcloud כדי לקבל רשומה
kubeconfigשמאפשרת גישה לאשכול דרך שער החיבור.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_IDהפלט אמור להיראות כך:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.עכשיו אפשר להריץ פקודות של
kubectlלקריאה בלבד דרך שער החיבור, כמו הפקודות הבאות:kubectl get pods -Aאם אתם צריכים הרשאות אדמין מלאות לאשכול האדמין, תוכלו לעיין במאמר בנושא הגדרת שער החיבור.
המסוף
סקירה כללית של התהליך
לפני שיוצרים את אשכול האדמין, צריך להריץ את הפקודה gkectl register bootstrap בתחנת העבודה של האדמין. הפקודה הזו פורסת אשכול Kubernetes ב-Docker (kind) בתחנת העבודה של האדמין. באשכול האתחול הזה מתארחים בקרי Kubernetes שנדרשים ליצירת אשכול האדמין. כשיוצרים את אשכול האדמין, הבקרים באשכול ה-bootstrap יקצו צמתים, יריצו בדיקות קדם-הפעלה וירשמו את אשכול האדמין ב-Fleet. אחרי שיוצרים את אשכול האדמין, אשכול האתחול נמחק אוטומטית.
אלה השלבים ברמה גבוהה ליצירת אשכול אדמין באמצעות המסוף:
במסוף, מזינים את המידע שנדרש על ידי
gkectl register bootstrap. במסוף מוצגת הפקודהgkectl register bootstrapעם המידע שהזנתם. הפקודה שמוצגת כוללת גם דגלים לנתיבים שתצטרכו לציין לפני שתריצו את הפקודה.בתחנת העבודה של האדמין, מריצים את הפקודה
gkectl register bootstrapכדי ליצור את אשכול ה-bootstrap. בסיום הפקודה ליצירת אשכול האתחול, הפלט מודיע לכם שעליכם לסיים את הגדרת אשכול האדמין. התהליך ממשיך לפעול עד שנוצר אשכול האדמין.חוזרים למסוף כדי לסיים להזין את המידע שנדרש ליצירת האשכול. במהלך יצירת האשכול, הפקודה
gkectl register bootstrapמציגה מידע על ההתקדמות וכותבת יומנים בתחנת העבודה של האדמין. כשיוצרים את אשכול האדמין, אשכול ה-bootstrap נמחק אוטומטית.
מתחילים להגדיר את האשכול
במסוף, עוברים לדף Create a cluster on VMware.
בוחרים את Google Cloud הפרויקט שבו רוצים ליצור את האשכול.
כשיוצרים את אשכול האתחול בקטע הבא, מזהה הפרויקט שנבחר מוצג בפקודה
gkectl register bootstrapבדגל--project-id.מוודאים שהאפשרות Create an admin cluster (יצירת אשכול אדמין) מסומנת.
לוחצים על הבא: התקנת סביבת bootstrap.
התקנת סביבת bootstrap
בקטע הזה מזינים את המידע שנדרש לפקודה gkectl register bootstrap. כשמזינים ערכים בשדות בממשק המשתמש, המסוף מעתיק את הערכים לדגלים המתאימים של הפקודה gkectl register bootstrap שמוצגת בקטע סביבת Bootstrap מתחנת עבודה של אדמין בחלק התחתון של הדף.
מידע בסיסי על סביבת Bootstrap
מזינים שם לאשכול הניהול. המסוף משתמש בשם האשכול כערך של הדגל
--target-cluster-nameבפקודהgkectl register bootstrapשמוצגת בחלק התחתון של הדף. האורך המקסימלי של השם הוא 20 תווים.בשדה Google Cloud מיקום ה-API, בוחרים אזור מהרשימה. Google Cloudההגדרה הזו מציינת את האזור שבו פועלים ממשקי ה-API והשירותים הבאים:
- GKE On-Prem API (
gkeonprem.googleapis.com) - שירות לצי רכב (
gkehub.googleapis.com) - חיבור שירות (
gkeconnect.googleapis.com)
ההגדרה הזו קובעת גם את האזור שבו מאוחסנים:
- המטא-נתונים של האשכול שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול
- הנתונים של רכיבי המערכת ב-Cloud Logging וב-Cloud Monitoring
- יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud
השדה Google Cloud API Location תואם לדגל
--locationבפקודהgkectl register bootstrap.- GKE On-Prem API (
בשדה Admin cluster version (גרסת אשכול Admin), מזינים את הגרסה שבה רוצים להשתמש כדי ליצור את האשכול. הגרסה שתבחרו כאן צריכה להיות זהה לגרסה של החבילה שציינתם בדגל
--bundle-pathבפקודהgkectl register bootstrap.
הגדרת vCenter
אם השתמשתם ב-gkeadm כדי ליצור את תחנת העבודה שלכם לאדמין, פותחים את קובץ התצורה של תחנת העבודה לאדמין כדי להעתיק ערכים מהקטע vCenter לשדות במסוף. שימו לב שקובץ התצורה של אשכול האדמין שנוצר מכיל גם את המידע הזה.
רוב השדות בקטע הזה הם קבועים. אם אתם רוצים לדעת אם שדה מסוים ניתן לשינוי או לא, תוכלו לעיין בקטע vCenter בהפניה לקובץ התצורה של אשכול האדמין.
בשדה כתובת, מזינים את הכתובת של vCenter Server.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.credentials.address.השדה Address (כתובת) תואם לדגל
--vcenter-addressבפקודהgkectl register bootstrap.
בשדה Datacenter (מרכז נתונים), מזינים את השם של מרכז הנתונים של vCenter.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.datacenter.השדה Datacenter תואם לדגל
--vcenter-datacenterבפקודהgkectl register bootstrap.
בשדה שם האשכול, מזינים את השם של אשכול vCenter.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.cluster.השדה Cluster Name (שם האשכול) תואם לדגל
--vcenter-clusterבפקודהgkectl register bootstrap.
בשדה Resource pool (מאגר משאבים), מזינים את השם או הנתיב של מאגר המשאבים של vCenter.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.resourcePool.השדה Resource pool תואם לדגל
--vcenter-resource-poolבפקודהgkectl register bootstrap.
מגדירים אפשרות אחסון על ידי הזנת אחת מהאפשרויות הבאות:
שדה Datastore: מזינים את השם של מאגר הנתונים של vCenter. הערך שאתם מציינים צריך להיות שם, ולא נתיב. אם צריך להזין נתיב, מזינים אותו בשדה תיקייה.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.datastore.השדה Datastore תואם לדגל
--vcenter-datastoreבפקודהgkectl register bootstrap.
בשדה Storage policy name (שם מדיניות האחסון): מזינים את השם של מדיניות האחסון של מכונות וירטואליות עבור צמתי האשכול. מידע נוסף זמין במאמר בנושא הגדרת מדיניות אחסון.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.storagePolicyName.השדה Storage policy name תואם לדגל
--vcenter-storage-policyבפקודהgkectl register bootstrap.
חובה להזין ערך בשדה Datastore או בשדה Storage Policy Name, אבל לא בשניהם.
אופציונלי: בשדה תיקייה, מזינים את השם של תיקיית vCenter שבה ימוקמו מכונות וירטואליות של האשכול.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.folder.השדה Folder תואם לדגל
--vcenter-folderבפקודהgkectl register bootstrap.
בשדה Network, מזינים את השם של רשת vCenter.
קובץ ההגדרה של תחנת העבודה לאדמין: משתמשים בערך מהשדה
vCenter.network.השדה Network תואם לדגל
--vcenter-networkבפקודהgkectl register bootstrap.
בשדה CA certificate path (נתיב לאישור CA), מזינים את הנתיב אל אישור הבסיס של ה-CA עבור vCenter Server.
אם השתמשתם ב-
gkeadmכדי ליצור את תחנת העבודה של האדמין,gkeadmהעתיק את קובץ אישור ה-CA שהיה לכם באופן מקומי לתחנת העבודה של האדמין.השדה נתיב אישור CA תואם ל-
--vcenter-ca-cert-pathבפקודהgkectl register bootstrap.
קבלת אישור CA
אחרי שיוצרים את אשכול ה-bootstrap, צריך לספק את אישור ה-CA של vCenter בפורמט PEM בשדה CA certificate data בדף Cluster basics. מריצים את הפקודה הבאה כדי להציג את האישור:
cat CA_CERT_PATH
מחליפים את CA_CERT_PATH בנתיב לאישור CA הבסיסי של vCenter Server. אם מריצים את הפקודה הזו באופן מקומי, צריך להשתמש בנתיב שב-vCenter.caCertPath בקובץ התצורה של תחנת העבודה של האדמין.
מעתיקים את האישור כולו לכלי לעריכת טקסט כדי שתוכלו להדביק אותו בשדה CA certificate data בדף Cluster basics אחרי שיוצרים את אשכול ה-bootstrap.
הפעלת סביבת Bootstrap מתחנת עבודה של אדמין
כשמריצים את הפקודה gkectl register bootstrap, מוצגת בקשה להזין את שם המשתמש והסיסמה של חשבון vCenter. חשוב לוודא שיש לכם את פרטי הכניסה. אם השתמשתם ב-gkeadm כדי ליצור את תחנת העבודה של האדמין, שם המשתמש והסיסמה נמצאים בקובץ credential.yaml.
גוללים לקטע Bootstrap environment from admin workstation (הפעלת סביבת Bootstrap מתחנת עבודה של אדמין) כדי להציג את הפקודה
gkectl register bootstrap.משאירים את הדף הזה פתוח ועוברים לתחנת העבודה של האדמין כדי ליצור את אשכול האתחול.
מעתיקים את הפקודה
gkectl register bootstrapומדביקים אותה בעורך טקסט כדי לציין ערכים לדגלים הבאים:./gkectl register bootstrap \ ... --bundle-path=BUNDLE_PATH \ ... --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \ --stackdriver-service-account-key-path=LOG_MON_SA_PATH \ --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \ --admin-kubeconfig-out=KUBECONFIG_NAMEמחליפים את הנתיבים הבאים בנתיבים של תחנת העבודה של האדמין:
-
BUNDLE_PATH: הנתיב לקובץ החבילה. אם השתמשתם ב-gkeadmכדי ליצור את תחנת העבודה לאדמין, קובץ החבילה נמצא ב-/var/lib/gke/bundles/. שם הקובץ תלוי בגרסה של Google Distributed Cloud, לדוגמה,gke-onprem-vsphere-1.31.0-gke.889-full.tgz. -
COMPONENT_ACCESS_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות של רכיב הגישה. -
CONNECT_REGISTER_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות connect-register. -
LOG_MON_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות של שירות הרישום ביומן והמעקב. -
CLOUD_AUDIT_SA_PATH: הנתיב לחשבון השירות של יומן הביקורת. אם לא יצרתם חשבון שירות לרישום ביומן ביקורת, מציינים את הנתיב לקובץ המפתח של חשבון השירות של שירות הרישום ביומן והמעקב. -
KUBECONFIG_NAME: השם של קובץ ה-kubeconfig שנוצר באמצעות הפקודהgkectl register bootstrap. אם לא מציינים את הדגל הזה, הפקודה יוצרת את הקובץ בשםkubeconfigבספריית העבודה הנוכחית. אם קיים קובץ בשםkubeconfig, הפקודה מחליפה את הקובץ.
בנוסף, אם השתמשתם ב-
gkeadmכדי ליצור את תחנת העבודה של האדמין, הקובץgkectlהורד לספרייה/usr/bin/. במקרה כזה, צריך להסיר את./מתחילת הפקודה כיgkectlלא נמצא בספריית העבודה הנוכחית.-
משתמשים ב-SSH כדי להתחבר לתחנת העבודה של האדמין.
מעתיקים את הפקודה ומדביקים אותה בחלון מסוף בתחנת העבודה של האדמין.
כשמתבקשים, מזינים (או מעתיקים ומדביקים) את שם המשתמש ב-vCenter. שם המשתמש לא מוצג במסך.
כשמתבקשים, מזינים (או מעתיקים ומדביקים) את הסיסמה של vCenter. הסיסמה לא מוצגת במסך.
הפקודה מריצה מספר רב של אימותים. אחרי ש-gkectl יוצר את אשכול האתחול, מוצג פלט שדומה לזה (הפלט קוצר כדי שיהיה קל יותר לקרוא אותו):
Running workstation validations
- Validation Category: Workstation
- [SUCCESS] Workstation OS
- [SUCCESS] Workstation Hardware
- [SUCCESS] Workstation Package
- [SUCCESS] Workstation NTP
- [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -
התהליך ממשיך לפעול עד שנוצר אשכול האדמין.
אם יוצאים מהפקודה gkectl register bootstrap לפני שנוצר אשכול האדמין, יצירת אשכול האדמין נכשלת וצריך למחוק את אשכול האתחול באמצעות הפקודה הבאה:
gkectl delete bootstrap \
--target-cluster-name=ADMIN_CLUSTER_NAME \
--project-id=PROJECT_ID \
--location=REGION \
--register-service-account-key-path=CONNECT_REGISTER_SA_PATH
סיום ההגדרה של אשכול האדמין
חוזרים למסוף ומבצעים את השלבים הבאים:
בדף Install bootstrap environment (התקנת סביבת bootstrap), לוחצים על Check Connection (בדיקת החיבור).
אם הפעולה מצליחה, במסוף מוצגת ההודעה Connection established.
צריך ליצור את החיבור לאשכול bootstrap לפני שממשיכים. אם החיבור לא נוצר, צריך לבדוק את הארגומנטים שצוינו בפקודה
gkectl register bootstrap:מוודאים שהערך של
--target-cluster-nameזהה לשם אשכול האדמין שמוצג בקטע Bootstrap environment basics (היסודות של סביבת האתחול).מוודאים שהערך של
--project-idתואם למזהה של הפרויקט שבחרתם במסוף.
אם אתם צריכים לשנות את השם של אשכול ה-bootstrap, את מזהה הפרויקט או ערכים אחרים של דגלים, אתם צריכים לבצע את הפעולות הבאות:
- מזינים
Ctrl-Cכדי לצאת מ-gkectl register bootstrap. מוחקים את אשכול ה-bootstrap:
gkectl delete bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH
מריצים מחדש את הפקודה
gkectl register bootstrap.
לוחצים על הבא: יסודות של אשכול כדי להתחיל להגדיר את אשכול הניהול.
מידע בסיסי על אשכולות
בשדה CA certificate data, מעתיקים ומדביקים את כל אישור ה-CA של vCenter בפורמט PEM, כמו שמתואר בקטע Get the CA certificate.
בקטע הרשאה, מזינים את כתובות האימייל של המשתמשים שרוצים להעניק להם את תפקיד Kubernetes
clusterrole/viewלקריאה בלבד. שימו לב שכתובת האימייל שלכם נוספת באופן אוטומטי. כללי המדיניות של בקרת הגישה מבוססת-תפקידים (RBAC) שמוחלים מאפשרים למשתמשים להריץ פקודות לקריאה בלבד דרך שער החיבור.לוחצים על Next Control Plane (המישור הבא של הבקרה).
מישור הבקרה
בודקים את הגדרות ברירת המחדל בקטע מישור הבקרה ומשנים אותן לפי הצורך.
בקטע Control plane node IPs, מזינים את כתובות ה-IP בשדות הבאים:
שער: כתובת ה-IP של שער ברירת המחדל של רשת המשנה שכוללת את צמתי האשכול.
Netmask: מסכת הרשת של רשת המשנה שכוללת את צמתי האשכול.
כתובות IP: מזינים את כתובת ה-IP ואת שם המארח (אופציונלי) של שלושת הצמתים של מישור הבקרה.
לוחצים על הבא: רשת.
Networking
בקטע הזה מציינים את פרטי הרשת שנדרשים ליצירת אשכול האדמין.
בקטע Service and Pod CIDRs (כתובות CIDR של שירותים ו-Pods), מאשרים את ערכי ברירת המחדל של טווחי כתובות ה-IP של שירותים ו-Pods ב-Kubernetes, או מזינים טווחי כתובות CIDR שונים.
CIDR של השירות: הטווח הקטן ביותר האפשרי:
/24. הטווח הגדול ביותר האפשרי:/12.Pod CIDR: הטווח הקטן ביותר האפשרי:
/18. הטווח הגדול ביותר האפשרי: /8`.
בקטע Host config, מציינים את שרתי ה-NTP, שרתי ה-DNS ואת דומייני החיפוש של ה-DNS שבהם נעשה שימוש במכונות הווירטואליות שהן הצמתים של האשכול. אחרי שיוצרים את האשכול, אי אפשר לשנות את הערכים האלה.
לוחצים על הבא: מאזן עומסים.
מאזן עומסים
בקטע הזה בוחרים את סוג מאזן העומסים שרוצים להשתמש בו. מידע נוסף מופיע במאמר סקירה כללית על איזון עומסים.
ברשימה סוג מאזן העומסים, בוחרים מאזן עומסים:
חבילה עם MetalLB: מאזן העומסים MetalLB כלול בחבילה ודורש פחות הגדרות מאשר איזון עומסים ידני. רכיבי MetalLB פועלים בצמתי האשכול, כך שלא צריך ליצור מכונות וירטואליות נפרדות למאזן העומסים.
ידני: אפשר להשתמש בכל איזון עומסים שתבחרו, כל עוד תגדירו אותו לפני יצירת האשכול. בכל איזון עומסים שמגדירים באופן ידני, צריך להגדיר מיפויים בין כתובות IP וירטואליות (VIP), כתובות צמתים וערכי NodePort.
בשדה Control plane VIP (כתובת IP וירטואלית של מישור הבקרה), מזינים את כתובת ה-IP הווירטואלית שתשמש לתעבורת נתונים שנשלחת לשרת ה-API של Kubernetes.
לוחצים על אימות ויצירה.
במסוף מוצגות הודעות סטטוס בזמן שההגדרות מאומתות והאשכול נוצר במרכז הנתונים.
אם יש בעיה בהגדרה, במסוף מוצגת הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את בעיית ההגדרה ולנסות שוב ליצור את האשכול.
פרטים על תהליך יצירת האשכול מוצגים בתחנת העבודה של האדמין. אם בדיקות קדם-הפעלה עוברות בהצלחה, יופיע משהו כזה:
[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK [2023-03-22 23:15:47+0000] Writing kubeconfig file [2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig [2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster. [2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK [2023-03-22 23:20:17+0000] Please run [2023-03-22 23:20:17+0000] kubectl --kubeconfig gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes [2023-03-22 23:20:17+0000] to get cluster nodes status. [2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK [2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK [2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK [2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster [2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK [2023-03-22 23:27:41+0000] Flushing logs... OK [2023-03-22 23:27:41+0000] Deleting membership... OK [2023-03-22 23:27:42+0000] Deleting bootstrap cluster.
חיבור לאשכול הניהול
הפקודה gkectl register bootstrap יוצרת קובץ kubeconfig עבור אשכול האדמין בתחנת העבודה של האדמין. אם לא ציינתם את הדגל --admin-kubeconfig-out כשביצעתם את הפקודה gkectl register bootstrap, הפקודה יוצרת קובץ kubeconfig בשם kubeconfig בספרייה שבה הפעלתם את הפקודה.
צריך להגביל את הגישה אל kubeconfig כי הוא מכיל פרטי אימות של האשכול.
בנוסף, אפשר להריץ פקודות של kubectl לקריאה בלבד דרך שער החיבור.
מריצים את הפקודה הבאה במחשב שמותקן בו ה-CLI של gcloud כדי לקבל רשומה
kubeconfigשמאפשרת גישה לאשכול דרך שער החיבור.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_IDהפלט אמור להיראות כך:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.עכשיו אפשר להריץ פקודות של
kubectlלקריאה בלבד דרך שער החיבור, כמו הפקודות הבאות:kubectl get pods -Aאם אתם צריכים הרשאות אדמין מלאות לאשכול האדמין, תוכלו לעיין במאמר בנושא הגדרת שער החיבור.
פתרון בעיות
פתרון בעיות ביצירה ובשדרוג של אשכולות