זהו החלק השני של המדריך שבו מוסבר איך להתקין את Google Distributed Cloud בקנה מידה קטן, כהוכחת היתכנות. בחלק הראשון, הגדרת תשתית מינימלית, מוסבר איך לתכנן את כתובות ה-IP ולהגדיר את התשתית הנדרשת של vSphere ו- Google Cloud לפריסה. המסמך הזה מתבסס על ההגדרה והתכנון שביצעתם בקטע הקודם, ומסביר איך ליצור תחנת עבודה של אדמין, אשכול אדמין ואשכול משתמש בסביבת vSphere, באמצעות תבניות שאפשר למלא כאן במסמך. לאחר מכן תוכלו לפרוס אפליקציה.
כמו בהגדרת התשתית של ההתקנה הבסיסית הזו, יכול להיות שהאשכולות שתגדירו באמצעות המסמך הזה לא יתאימו לצרכים ולתרחישי השימוש בפועל בסביבת הייצור. מידע נוסף, שיטות מומלצות והוראות להתקנות בסביבת ייצור זמינים במדריכי ההתקנה.
בגרסה 1.33 ואילך, כל האשכולות החדשים נוצרים כאשכולות מתקדמים. חשוב לקרוא את המאמרים ההבדלים בהפעלת אשכולות מתקדמים וההבדלים ביצירה ובשדרוג של אשכולות.
לפני שמתחילים
מוודאים שהגדרתם את סביבות vSphere ו- Google Cloud כמו שמתואר במאמר הגדרת תשתית מינימלית.
אם אתם רוצים להשתמש ב-Terraform כדי ליצור את אשכול המשתמש, אתם צריכים את Terraform בתחנת העבודה של האדמין או במחשב אחר.
סקירה כללית של התהליך
אלה השלבים העיקריים בתהליך ההגדרה:
מתחברים ל-Google Cloud CLI באמצעות חשבון עם ההרשאות הנדרשות ליצירת חשבונות שירות.
אוספים את המידע שצריך כדי להגדיר את Google Distributed Cloud, כולל שם המשתמש והסיסמה של vCenter וכתובות ה-IP שהכנתם בקטע הקודם.
יוצרים תחנת עבודה של אדמין עם המשאבים והכלים שנדרשים כדי ליצור אשכולות של אדמינים ומשתמשים, כולל חשבונות השירות הנוספים שנדרשים כדי לסיים את ההגדרה.
יוצרים אשכול אדמין כדי לנהל ולעדכן את אשכול המשתמשים.
יוצרים אשכול משתמשים כדי להריץ את עומסי העבודה.
1. התחברות ל-Google Cloud CLI
כדי להגדיר את Google Distributed Cloud, צריך כמה חשבונות שירות עם הרשאות שונות. לכן, אתם צריכים להתחבר ל-Google Cloud CLI באמצעות חשבון עם ההרשאות שנדרשות כדי ליצור ולהגדיר חשבונות שירות, כי gkeadm משתמש במאפיין account הנוכחי של ה-CLI של gcloud במהלך ההגדרה הזו.
מתחברים ל-CLI של gcloud. אפשר להשתמש בכל חשבון Google, אבל צריכות להיות לו ההרשאות הנדרשות. אם פעלתם לפי החלק הקודם במדריך, כנראה שכבר התחברתם לחשבון המתאים כדי ליצור את חשבון השירות לגישה לרכיבים.
gcloud auth login
מוודאים שהמאפיין
accountשל ה-CLI של gcloud מוגדר בצורה נכונה:gcloud config list
הפלט מציג את הערך של המאפיין
accountשל ה-SDK. לדוגמה:[core] account = my-name@google.com disable_usage_reporting = False Your active configuration is: [default]
מוודאים שמותקנים הרכיבים העדכניים של ה-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 של אשכול המשתמשים
יוצרים קובץ בשם
user-ipblock.yaml.מעתיקים את התוכן הבא ומדביקים אותו בקובץ
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"
יצירת קובץ התצורה של אשכול המשתמשים
יוצרים קובץ בשם
user-cluster.yamlבאותה ספרייה שבה נמצא הקובץuser-ipblock.yaml.מעתיקים את התוכן הבא ומדביקים אותו בקובץ
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 ואילך.
אם מתקינים גרסה ישנה יותר באשכול מתקדם, הפקודה תיכשל.
מוודאים שקובץ התצורה של אשכול המשתמש תקין ואפשר להשתמש בו כדי ליצור אשכול:
gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
יוצרים את אשכול המשתמשים:
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 כדי לקבל מידע על אשכול המשתמשים.
המסוף
נכנסים לדף Create a Google Distributed Cloud cluster במסוף Google Cloud .
בוחרים את הפרויקט ב- Google Cloud שבו רוצים ליצור את האשכול. הפרויקט שנבחר משמש גם כפרויקט המארח של ה-fleet. זה צריך להיות אותו פרויקט שאליו רשום אשכול האדמין. אחרי שיוצרים את אשכול המשתמש, הוא נרשם באופן אוטומטי ל-fleet של הפרויקט שנבחר.
בקטעים הבאים מוסבר איך להגדיר את אשכול המשתמשים.
דרישות מוקדמות
קוראים את המידע בדף דרישות מוקדמות.
בתחתית הדף, לוחצים על הבא.
מידע בסיסי על אשכולות
בשדה Name, מזינים שם לאשכול המשתמש, לדוגמה
minimal-installation-user-cluster.בשדה Admin cluster, בוחרים באפשרות minimal-installation-admin-cluster.
בשדה GCP API Location, בוחרים באפשרות us-central1.
בשדה Version, בוחרים באפשרות 1.36.200-gke.118.
אין צורך לפתוח את הקטע Authorization או את הקטע vCenter configuration.
לוחצים על הבא.
מישור הבקרה
בקטע כתובות IP של צומתי מישור הבקרה, בשדה שער מזינים את הערך DEFAULT_GATEWAY_IP.
בשדה מסכה של רשת משנה מזינים NETMASK.
בקטע כתובות IP, בשדה כתובת IP 1, מזינים את הערך USER_CONTROL_PLANE_NODE_IP. משאירים את השדה Hostname 1 (שם מארח 1) ריק.
לוחצים על הבא.
Networking
בקטע הזה מציינים את כתובות ה-IP של הצמתים, ה-Pods והשירותים של האשכול. לאשכול משתמש צריכה להיות כתובת IP אחת לכל צומת וכתובת IP נוספת לצומת זמני שנדרש במהלך שדרוגים, עדכונים ותיקונים אוטומטיים של האשכול. למידע נוסף, קראו את המאמר כמה כתובות IP נדרשות לאשכול משתמשים?.
בקטע כתובות IP של צומת עובד, מוודאים שהאפשרות Static נבחרה בשדה מצב IP.
בשדה Gateway, מזינים DEFAULT_GATEWAY_IP.
בשדה מסכה של רשת משנה מזינים NETMASK.
בקטע כתובות IP, מזינים את הכתובות הבאות:
- USER_NODE_IP_1
- USER_NODE_IP_2
- USER_NODE_IP_3
- USER_NODE_IP_4
משאירים את השדות של Hostname (שם המארח) ריקים.
בשדה Service CIDR, מזינים 10.96.0.0/20. בשדה Pod CIDR, מזינים את הערך 192.168.0.0/16.
בשדה DNS Server 1 (שרת DNS מס' 1), מזינים את הערך DNS_SERVER_IP.
בשדה שרת NTP 1 מזינים את הערך NTP_SERVER_IP.
משאירים את השדה DNS search domain (דומיין חיפוש DNS) ריק.
לוחצים על הבא.
מאזן עומסים
בשדה Load balancer type, בוחרים באפשרות Bundled with MetalLB.
בקטע Address pools, משתמשים בשם ברירת המחדל.
בקטע כתובות IP, בשדה טווח כתובות IP 1, מזינים את הערך USER_INGRESS_VIP/32.
לוחצים על הוספת טווח של כתובות IP. בשדה טווח כתובות IP 1, מזינים SERVICE_VIP_1/32
לוחצים על הוספת טווח של כתובות IP. בשדה טווח כתובות IP 2, מזינים SERVICE_VIP_2/32
בקטע הקצאת כתובות IP, בוחרים באפשרות Automatic.
משאירים את האפשרות Avoid buggy IP addresses לא מסומנת.
בקטע Virtual IPs, בשדה Control plane VIP מזינים את הערך USER_CONTROL_PLANE_VIP. השדה Ingress VIP כבר מלא.
לוחצים על Continue.
תכונות
משאירים את כל ערכי ברירת המחדל.
לוחצים על הבא.
מאגרי צמתים
משאירים את כל ערכי ברירת המחדל.
לוחצים על Verify and Complete כדי ליצור את אשכול המשתמשים. יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. במסוף מוצגות הודעות סטטוס בזמן אימות ההגדרות ויצירת האשכול במרכז הנתונים.
אם מתרחשת שגיאה באימות ההגדרות, במסוף תוצג הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את הבעיה בהגדרות ולנסות שוב ליצור את האשכול.
מידע נוסף על שגיאות אפשריות ואיך לפתור את הבעיה מופיע במאמר פתרון בעיות באשכולות שרשומים ב-GKE On-Prem API.
Terraform
בקטע הזה מוסבר איך יוצרים אשכול משתמש ומאגר צמתים באמצעות Terraform. מידע נוסף ודוגמאות אחרות מופיעים במאמרים הבאים:
יוצרים ספרייה חדשה ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tfמאמתים את המשאב של 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 }מעתיקים את המשאב של Terraform לקובץ
main.tfושומרים את הקובץ.מאתחלים ויוצרים את התוכנית ב-Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו הספק Google Cloud .
בודקים את ההגדרות ומשנים אותן לפי הצורך:
terraform planמפעילים את התוכנית של 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. כדי לראות את ההתקנה בפעולה, אתם יכולים לפרוס אפליקציה.