כשיוצרים אשכול משתמשים, צריך להגדיר לפחות מאגר צמתים אחד, שהוא קבוצה של צמתים עם אותה הגדרה. אחרי שיוצרים את האשכול, אפשר להוסיף מאגרי צמתים חדשים, לעדכן את ההגדרות של מאגרי הצמתים ולמחוק מאגרי צמתים.
בחירת כלי לניהול מאגרי צמתים
האופן שבו יוצרים, מעדכנים ומוחקים מאגרי צמתים תלוי בשאלה אם האשכול מנוהל על ידי GKE On-Prem API. אשכול משתמשים מנוהל על ידי GKE On-Prem API אם אחד מהתנאים הבאים מתקיים:
האשכול נוצר במסוף Google Cloud או באמצעות ה-CLI של gcloud (gcloud CLI), שמגדיר אוטומטית את GKE On-Prem API לניהול האשכול.
האשכול נוצר באמצעות
gkectl, אבל הוא הוגדר לניהול על ידי GKE On-Prem API.
אם GKE On-Prem API מנהל אשכול משתמשים, אפשר להשתמש במסוף או ב-CLI של gcloud כדי לנהל את מאגרי הצמתים. אם אשכול המשתמשים לא מנוהל על ידי GKE On-Prem API, משתמשים ב-gkectl בתחנת העבודה של האדמין כדי לנהל את מאגרי הצמתים.
אם אתם מתכננים להשתמש ב-CLI של gcloud, אתם צריכים לבצע את הפעולות הבאות במחשב שמותקן בו CLI של gcloud:
התחברות באמצעות חשבון Google
gcloud auth login
עדכון רכיבים:
gcloud components update
הוספת מאגר צמתים
אם האשכול מנוהל על ידי GKE On-Prem API, אפשר להשתמש במסוף או ב-CLI של gcloud כדי להוסיף מאגר צמתים. עם זאת, צריך להשתמש ב-gkectl בתחנת העבודה של האדמין כדי להגדיר את ההגדרות הבאות של מאגר הצמתים:
- Windows לסוג תמונת מערכת ההפעלה
- vSphere datastore
תגי vSphere אם רוצים לצרף תגים לכל המכונות הווירטואליות במאגר הצמתים, לחשבון המשתמש ב-vCenter צריכות להיות הרשאות תיוג ב-vSphere:
- תיוג ב-vSphere.הקצאה או ביטול הקצאה של תג vSphere
- תיוג ב-vSphere.הקצאה או ביטול הקצאה של תג vSphere באובייקט (vSphere 7)
לפני שמוסיפים עוד מאגר צמתים, צריך לוודא שיש מספיק כתובות IP זמינות באשכול.
gkectl
מבצעים את הפעולות הבאות בתחנת העבודה של האדמין:
בקטע
nodePoolsשל קובץ התצורה של אשכול המשתמשים, ממלאים את הפרטים.חובה לציין את השדות הבאים:
nodePools.[i].namenodePools[i].cpusnodePools.[i].memoryMBnodePools.[i].replicas
השדות הבאים הם אופציונליים. אם לא כוללים את התגים
nodePools[i].bootDiskSizeGBאוnodePools[i].osImageType, המערכת משתמשת בערכי ברירת המחדל.nodePools[i].labelsnodePools[i].taintsnodePools[i].bootDiskSizeGBnodePools[i].osImageTypenodePools[i].vsphere.datastorenodePools[i].vsphere.tags
מריצים את הפקודה הבאה:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_KUBECONFIGבנתיב של קובץ ה-kubeconfig של אשכול האדמין.
USER_CLUSTER_CONFIGעם הנתיב לקובץ התצורה של אשכול המשתמשים.
הגדרה לדוגמה
בהגדרת הדוגמה הבאה יש ארבעה מאגרי צמתים, שלכל אחד מהם יש מאפיינים שונים:
-
pool-1: מציינים רק את מאפייני החובה המינימליים -
pool-2: כוללvsphere.datastoreוגםvsphere.tags -
pool-3: כוללtaintsוגםlabels -
pool-4: כוללosImageTypeוגםbootDiskSizeGB
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
tags:
- category: "purpose"
name: "testing"
- name: pool-3
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
osImageType: cos
bootDiskSizeGB: 40
המסוף
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את הפרויקט Google Cloud שבו נמצא אשכול המשתמשים.
ברשימת האשכולות, לוחצים על שם האשכול ואז על הצגת פרטים בחלונית פרטים.
לוחצים על הוספת מאגר צמתים.
מגדירים את מאגר הצמתים:
- מזינים את שם מאגר הצמתים.
- מזינים את מספר vCPUs לכל צומת במאגר (מינימום 4 לכל עובד באשכול משתמשים).
- מזינים את גודל הזיכרון במביבייט (MiB) לכל צומת במאגר (מינימום 8,192MiB לכל צומת עובד באשכול משתמשים, והערך חייב להיות כפולה של 4).
- בשדה Nodes, מזינים את מספר הצמתים במאגר (מינימום 3).
בוחרים את סוג תמונת מערכת ההפעלה: Ubuntu Containerd או COS.
מזינים את גודל דיסק האתחול בגיביבייט (GiB) (ברירת המחדל היא 40GiB).
בקטע Node pool metadata (optional) (מטא-נתונים של מאגר צמתים (אופציונלי)), אם רוצים להוסיף labels (תוויות) ו-taints (הכתמות) של Kubernetes, מבצעים את הפעולות הבאות:
- לוחצים על + הוספת תוויות Kubernetes. מזינים את המפתח ואת הערך של התווית. חוזרים לפי הצורך.
- לוחצים על + הוספת כתם. מזינים את המפתח, הערך וההשפעה של הכתם. חוזרים לפי הצורך.
לוחצים על יצירה.
Google Cloud במסוף מוצג Cluster status: changes in progress. לוחצים על הצגת פרטים כדי לראות את תנאי סטטוס המשאב והודעות הסטטוס.
CLI של gcloud
מריצים את הפקודה הבאה כדי ליצור מאגר צמתים:
gcloud container vmware node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --image-type=IMAGE_TYPE \ --boot-disk-size=BOOT_DISK_SIZE \ --cpus=vCPUS \ --memory=MEMORY \ --replicas=NODES
מחליפים את מה שכתוב בשדות הבאים:
NODE_POOL_NAME: שם שתבחרו למאגר הצמתים. השם צריך:- לכלול עד 40 תווים
- להכיל רק תווים אלפאנומריים באותיות קטנות או מקף (
-) - להתחיל בתו אלפביתי
- להסתיים בתו אלפאנומרי
USER_CLUSTER_NAME: השם של אשכול המשתמש שבו ייצור מאגר הצמתים.
FLEET_HOST_PROJECT_ID: המזהה של הפרויקט שהאשכול רשום בו.
LOCATION: Google Cloud המיקום שמשויך לאשכול המשתמשים.
IMAGE_TYPE: סוג תמונת מערכת ההפעלה להפעלה במכונות הווירטואליות במאגר הצמתים. מגדירים את אחת האפשרויות הבאות:ubuntu_containerdאוcos.
BOOT_DISK_SIZE: גודל דיסק האתחול בגיביבייט (GiB) לכל צומת במאגר. הנפח המינימלי הוא 40GiB.
vCPUs: מספר ה-vCPU לכל צומת במאגר הצמתים. הערך המינימלי הוא 4.
MEMORY: גודל הזיכרון במביבייט (MiB) לכל צומת במאגר. הערך המינימלי הוא 8,192MiB לכל צומת עובד באשכול משתמשים, והערך חייב להיות כפולה של 4.
NODES: מספר הצמתים במאגר הצמתים. המינימום הוא 3.
לדוגמה:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5
אפשר גם לציין את הפרטים הבאים:
--enable-load-balancer: רלוונטי רק למאזן העומסים MetalLB. אם מציינים את ההגדרה הזו, אפשר להפעיל את הרמקול של MetalLB בצמתים במאגר. צריך להפעיל לפחות מאגר צמתים אחד בשביל איזון העומסים של MetalLB.
--image=IMAGE: השם של תמונת מערכת ההפעלה ב-vCenter.
--node-labels=KEY=VALUE,...: רשימה מופרדת בפסיקים של תוויות Kubernetes (צמדי מפתח/ערך) שמוחלות על כל צומת במאגר.--node-taints=KEY=VALUE:EFFECT,...רשימה מופרדת בפסיקים של Kubernetes taints שמוחלת על כל צומת במאגר. הכתמים הם צמדי מפתח/ערך שמשויכים להשפעה. משתמשים ב-Taints עם tolerations לתזמון של Pod. צריך לציין אחד מהערכים הבאים בשביל EFFECT:NoSchedule,PreferNoSchedule,NoExecute.
לדוגמה:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5 \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecuteלמידע על דגלים אופציונליים אחרים, אפשר לעיין במאמר העזר בנושא gcloud.
עדכון מאגר צמתים
כשמגדילים את מספר הרפליקות, Google Distributed Cloud מוסיף את מספר הצמתים הנדרש לאשכול המשתמשים, וכשמקטינים את מספר הרפליקות, הצמתים מוסרים. שינוי מספר הרפליקות של מאגר צמתים לא משבש את עומסי העבודה. אם מגדילים את מספר הרפליקות, צריך לוודא שיש כתובות IP זמינות.
אם מעדכנים שדה אחר במאגר הצמתים, מתבצע עדכון הדרגתי באשכול. בעדכון מתגלגל, Google Distributed Cloud יוצר צומת חדש ואז מוחק צומת ישן. התהליך הזה חוזר על עצמו עד שכל הצמתים הישנים מוחלפים בצמתים חדשים. התהליך הזה לא גורם להשבתה, אבל באשכול צריכה להיות כתובת IP נוספת שזמינה לשימוש במהלך העדכון.
נניח שבמאגר הצמתים יהיו N צמתים בסיום העדכון. אז צריכות להיות זמינות לפחות N + 1 כתובות IP לצמתים במאגר הזה. כלומר, אם משנים את הגודל של אשכול על ידי הוספת צמתים למאגר אחד או יותר, צריך שיהיה לפחות כתובת IP אחת יותר מהמספר הכולל של הצמתים שיהיו בכל מאגרי הצמתים של האשכול בסוף שינוי הגודל. מידע נוסף זמין במאמר בנושא אימות הזמינות של מספיק כתובות IP.
כדי לעדכן מאגר צמתים באשכול משתמשים:
gkectl
משנים את הערכים בשדות שרוצים לשנות בקטע
nodePoolsשל קובץ ההגדרה של אשכול המשתמשים.מעדכנים את האשכול:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_KUBECONFIGבנתיב של קובץ ה-kubeconfig של אשכול האדמין.
USER_CLUSTER_CONFIGעם הנתיב לקובץ התצורה של אשכול המשתמשים.
עדכון של osImageType שמשמש מאגר צמתים
כדי לעדכן מאגר צמתים כך שישתמש ב-osImageType אחר, צריך להשתמש בשורת הפקודה. כדי לשנות את osImageType שמשמש את מאגר הצמתים, מעדכנים את קובץ התצורה של מאגר הצמתים, כמו בדוגמה הבאה, ומריצים את gkectl update cluster.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
המסוף
אפשר לעדכן רק את השדות הבאים באמצעות המסוף:
- מספר העותקים המשוכפלים
- זיכרון
- מספר יחידות ה-vCPU
כדי לעדכן שדות אחרים, צריך להשתמש ב-CLI של gcloud או ב-gkectl.
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את הפרויקט Google Cloud שבו נמצא אשכול המשתמשים.
ברשימת האשכולות, לוחצים על שם האשכול ואז על הצגת פרטים בחלונית פרטים.
לוחצים על הכרטיסייה Nodes.
לוחצים על השם של מאגר הצמתים שרוצים לשנות.
לוחצים על עריכה לצד השדה שרוצים לשנות, ואז לוחצים על סיום.
לוחצים על כדי לחזור לדף הקודם.
Google Cloud במסוף מוצג Cluster status: changes in progress. לוחצים על הצגת פרטים כדי לראות את תנאי סטטוס המשאב והודעות הסטטוס.
CLI של gcloud
אפשר גם להציג את רשימת מאגרי הצמתים כדי לקבל את השם של מאגר הצמתים שרוצים לעדכן:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
מריצים את הפקודה הבאה כדי לעדכן את מאגר הצמתים:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --ATTRIBUTE_TO_UPDATE \ ...
מחליפים את מה שכתוב בשדות הבאים:
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים לעדכן.
USER_CLUSTER_NAME: השם של אשכול המשתמשים שמכיל את מאגר הצמתים.
LOCATION: Google Cloud המיקום שמשויך לאשכול המשתמשים.
ATTRIBUTE_TO_UPDATE: דגל אחד או יותר לעדכון מאפייני מאגר הצמתים. לדוגמה, כדי לשנות את מספר ה-vCPU והצמתים במאגר, מריצים את הפקודה הבאה.
gcloud container vmware node-pools update default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 --location=us-west1 \ --cpus=10 \ --replicas=6מידע על מאפייני מאגר הצמתים שאפשר לעדכן מופיע בחומר העזר של gcloud.
בדיקת השינויים
כדי לוודא שמאגרי הצמתים נוצרו או עודכנו כמו שרציתם, בודקים את צמתי האשכול:
gkectl
מריצים את הפקודה הבאה:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
אם צריך לחזור לגרסה קודמת של השינויים, עורכים את קובץ התצורה של האשכול ומריצים את הפקודה gkectl update cluster.
המסוף
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את הפרויקט Google Cloud שבו נמצא אשכול המשתמשים.
ברשימת האשכולות, לוחצים על שם האשכול ואז על הצגת פרטים בחלונית פרטים.
לוחצים על הכרטיסייה Nodes.
לוחצים על השם של מאגר הצמתים שרוצים להציג.
CLI של gcloud
מריצים את הפקודה הבאה:
gcloud container vmware node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
מחיקת מאגר צמתים
אפשר למחוק מאגרי צמתים, אבל באשכול המשתמשים חייב להיות לפחות מאגר צמתים אחד. מחיקה של מאגר צמתים גורמת להסרה מיידית של הצמתים במאגר, בלי קשר לשאלה אם הצמתים האלה מריצים עומסי עבודה.
כדי למחוק מאגר צמתים מאשכול משתמשים:
gkectl
מוודאים שאין עומסי עבודה שפועלים בצמתים המושפעים.
מסירים את ההגדרה שלו מהקטע
nodePoolsבקובץ התצורה של אשכול המשתמשים.מעדכנים את האשכול:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
מחליפים את מה שכתוב בשדות הבאים:
[ADMIN_CLUSTER_KUBECONFIG]בנתיב של קובץ ה-kubeconfig של אשכול האדמין.
[USER_CLUSTER_CONFIG]עם הנתיב לקובץ התצורה של אשכול המשתמשים.
המסוף
מוודאים שאין עומסי עבודה שפועלים בצמתים המושפעים.
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את הפרויקט Google Cloud שבו נמצא אשכול המשתמשים.
ברשימת האשכולות, לוחצים על שם האשכול ואז על הצגת פרטים בחלונית פרטים.
לוחצים על הכרטיסייה Nodes.
לוחצים על השם של מאגר הצמתים שרוצים למחוק.
לוחצים על מחיקה.
לוחצים על כדי לחזור לדף הקודם.
Google Cloud במסוף מוצג Cluster status: changes in progress. לוחצים על הצגת פרטים כדי לראות את תנאי סטטוס המשאב והודעות הסטטוס.
CLI של gcloud
אפשר גם להריץ את הפקודה הבאה כדי לקבל את השם של מאגר הצמתים שרוצים למחוק:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
מריצים את הפקודה הבאה כדי למחוק את מאגר הצמתים:
gcloud container vmware node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים למחוק.
USER_CLUSTER_NAME: השם של אשכול המשתמשים שמכיל את מאגר הצמתים.
LOCATION: Google Cloud המיקום שמשויך לאשכול המשתמשים.
פתרון בעיות
באופן כללי, הפקודה
gkectl update clusterמספקת פרטים ספציפיים כשהיא נכשלת. אם הפקודה הצליחה והצמתים לא מופיעים, אפשר להיעזר במדריך אבחון בעיות באשכול כדי לפתור את הבעיה.יכול להיות שאין מספיק משאבי אשכול, למשל אין מספיק כתובות IP זמינות במהלך יצירה או עדכון של מאגר צמתים. פרטים על אימות הזמינות של כתובות IP מופיעים במאמר בנושא שינוי הגודל של אשכול משתמשים.
אפשר גם לעיין במאמר בנושא פתרון בעיות בעדכונים של Google Distributed Cloud.
לא ימשיך אחרי
Creating node MachineDeployment(s) in user cluster….יכול לעבור זמן מה עד שמאגרים של צמתים נוצרים או מתעדכנים באשכול המשתמשים. עם זאת, אם זמן ההמתנה ארוך במיוחד ואתם חושדים שמשהו נכשל, אתם יכולים להריץ את הפקודות הבאות:
- מריצים את הפקודה
kubectl get nodesכדי לקבל את המצב של הצמתים. - אם יש צמתים שלא מוכנים, מריצים את הפקודה
kubectl describe node NODE_NAMEכדי לקבל פרטים.
- מריצים את הפקודה