כשמשדרגים בנפרד את מישור הבקרה ואת מאגרי הצמתים של העובדים באשכול משתמשים של תוכנת Google Distributed Cloud ל-VMware בלבד, אפשר לאמת את התאימות של עומסי העבודה במאגרי צמתים נפרדים ולפרוס את השדרוגים על פני חלונות זמן קצרים יותר לתחזוקה.
המסמך הזה מיועד לאדמינים ממחלקת IT ולמפעילים שמנהלים את מחזור החיים של תשתית הטכנולוגיה הבסיסית. במאמר משימות ותפקידים נפוצים של משתמשי GKE מפורט מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן של Google Cloud . לפני שמתחילים, חשוב להכיר את הנושאים הבאים: סקירה כללית על שדרוגים, כללים לשדרוג גרסאות, שיטות מומלצות לשדרוג ושדרוג אשכול.
מגבלות
לשדרוג של מאגרי צמתים בנפרד ממישור הבקרה יש את המגבלות הבאות:
התכונה הזו נתמכת במאגרי צמתים של Ubuntu ושל מערכת הפעלה שמותאמת לקונטיינרים, אבל לא במאגרי צמתים של Windows.
התכונה הזו לא זמינה כשמשדרגים אשכולות לא מתקדמים לאשכולות מתקדמים. אשכולות לא מתקדמים ישודרגו באופן אוטומטי לאשכולות מתקדמים בגרסה 1.33.
גרסה 1.31: התכונה הזו לא זמינה באשכולות מתקדמים.
גרסה 1.32 ואילך: התכונה הזו זמינה באשכולות מתקדמים.
גרסת מאגר הצמתים של מאזן העומסים חייבת להיות זהה לגרסת האשכול. אי אפשר לשדרג מאגר צמתים של מאזן עומסים (מאגר צמתים עם
enableLoadBalancer: true) בנפרד ממישור הבקרה, ואי אפשר להשתמש בגרסאות שונות.
למה לשדרג את מישור הבקרה ואת מאגרי הצמתים בנפרד?
במצבים מסוימים, יכול להיות שתרצו לשדרג חלק ממאגרי הצמתים של העובדים באשכול משתמש, אבל לא את כולם:
קודם כל, אתם יכולים לשדרג את מישור הבקרה ומאגר צמתים עם עומס תנועה קל או שמריץ את עומסי העבודה הכי פחות קריטיים. אחרי שמוודאים שעומסי העבודה פועלים כמו שצריך בגרסה החדשה, אפשר לשדרג מאגרי צמתים נוספים עד שכל מאגרי הצמתים משודרגים.
במקום להשתמש בחלון זמן אחד גדול לתחזוקה כדי לשדרג את האשכול, אתם יכולים לשדרג את האשכול בכמה חלונות זמן לתחזוקה. במאמר הערכת משך הזמן הנדרש ותכנון חלון זמן לתחזוקה מוסבר איך להעריך את משך הזמן של חלון הזמן לתחזוקה.
אתם יכולים לדלג על גרסה משנית כשאתם משדרגים מאגרי צמתים, כדי לצמצם את מספר השדרוגים שנדרשים כדי להישאר בגרסה נתמכת. כך תוכלו לחסוך זמן ולצמצם את ההפרעות לעומסי העבודה. למידע נוסף, קראו את המאמר דילוג על גרסה כשמשדרגים מאגרי צמתים.
לפני שמתחילים
בגרסה 1.29 ואילך, בדיקות מקדימות בצד השרת מופעלות כברירת מחדל. חשוב לבדוק את הכללים של חומת האש כדי לבצע את השינויים הנדרשים.
כדי לשדרג לגרסה 1.28 ואילך, צריך להפעיל את
kubernetesmetadata.googleapis.comולהקצות את התפקידkubernetesmetadata.publisherב-IAM לחשבון השירות של רישום ביומן ומעקב. לפרטים נוספים, קראו את המאמר הדרישות של Google API וניהול זהויות והרשאות גישה (IAM).מוודאים שהגרסה הנוכחית של האשכול היא 1.14 ואילך.
שדרוג מישור הבקרה ומאגרי הצמתים שנבחרו
אפשר לשדרג את מישור הבקרה של אשכול משתמש בנפרד ממאגרי צומתי העובדים באמצעות gkectl, Google Cloud CLI ו-Terraform.
אתם יכולים להשתמש ב-Terraform לשדרוג רק אם יצרתם את אשכול המשתמש באמצעות Terraform.
gkectl
מגדירים את גרסת המקור ואת גרסת היעד במשתני ה-placeholder הבאים. כל הגרסאות צריכות להיות מספר הגרסה המלא בפורמט
x.y.z-gke.N, למשל1.16.11-gke.25.גרסה תיאור SOURCE_VERSIONגרסת האשכול הנוכחית. TARGET_VERSIONבוחרים את גרסת היעד. בוחרים את התיקון המומלץ מגרסת המשנה של היעד. משדרגים את תחנת העבודה של האדמין לגרסת היעד. מחכים עד שמופיעה הודעה שהשדרוג בוצע בהצלחה.
מייבאים את קובצי האימג' של מערכת ההפעלה המתאימים ל-vSphere:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
מחליפים את
ADMIN_CLUSTER_KUBECONFIGבנתיב של קובץ ה-kubeconfigשל אשכול האדמין.מבצעים את השינויים הבאים בקובץ התצורה של אשכול המשתמש:
מגדירים את השדה
gkeOnPremVersionלגרסת היעד,TARGET_VERSION.בכל מאגר צמתים שרוצים לשדרג, מגדירים את השדה
nodePools[i].gkeOnPremVersionכמחרוזת ריקה.- בגרסה 1.28 ואילך, אפשר להאיץ את השדרוג של מאגר הצמתים על ידי הגדרת
nodePools[i].updateStrategy.rollingUpdate.maxSurgefield לערך שלם שגדול מ-1. כשמשדרגים צמתים באמצעותmaxSurge, כמה צמתים משודרגים באותו משך זמן שנדרש לשדרוג צומת אחד.
- בגרסה 1.28 ואילך, אפשר להאיץ את השדרוג של מאגר הצמתים על ידי הגדרת
לכל מאגר צמתים שאתם לא רוצים לשדרג, מגדירים את
nodePools[i].gkeOnPremVersionלגרסת המקור,SOURCE_VERSION. שימו לב שאי אפשר לעכב מאגרי צמתים של מאזני עומסים (מאגרי צמתים עםenableLoadBalancer: true). הגרסה שלהם צריכה להתאים לגרסת האשכול.
בדוגמה הבאה מוצג חלק מקובץ התצורה של אשכול המשתמש. הוא מציין שמישור הבקרה ו-
pool-1ישודרגו לגרסהTARGET_VERSION, אבלpool-2יישאר בגרסהSOURCE_VERSION.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...משדרגים את מישור הבקרה ואת מאגרי הצמתים שנבחרו:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
מחליפים את
USER_CLUSTER_CONFIGבנתיב של קובץ התצורה של אשכול המשתמש.
שדרוג מאגרי צמתים נוספים
נמשיך עם הדוגמה הקודמת: נניח שהכול עובד כמו שצריך עם pool-1, ועכשיו אתם רוצים לשדרג את pool-2.
בקובץ התצורה של אשכול המשתמש, בקטע
pool-2, מגדירים אתgkeOnPremVersionלמחרוזת הריקה:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...מריצים את הפקודה
gkectl update clusterכדי להחיל את השינוי:gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
CLI של gcloud
כדי לשדרג אשכול משתמשים, צריך לבצע כמה שינויים באשכול האדמין. הפקודה gcloud container vmware clusters upgrade מבצעת באופן אוטומטי את הפעולות הבאות:
רושם את אשכול האדמין ב-GKE On-Prem API אם הוא עדיין לא רשום.
הורדה ופריסה של חבילת רכיבים באשכול האדמין. גרסת הרכיבים תואמת לגרסה שציינתם לשדרוג. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות של משתמשים בגרסה הזו.
שדרוג מישור הבקרה
כדי לשדרג את מישור הבקרה של אשכול המשתמש, מבצעים את השלב הבא.
מעדכנים את הרכיבים של ה-CLI של gcloud:
gcloud components updateמשנים את מדיניות השדרוג באשכול:
gcloud container vmware clusters update USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --upgrade-policy control-plane-only=True
מחליפים את מה שכתוב בשדות הבאים:
USER_CLUSTER_NAME: השם של אשכול המשתמש שרוצים לשדרג.
PROJECT_ID: המזהה של פרויקט המארח של ה-Fleet שאשכול המשתמש שייך אליו. זה הפרויקט שציינתם כשהאשכול נוצר. אם יצרתם את האשכול באמצעותgkectl, זהו מזהה הפרויקט בשדהgkeConnect.projectIDבקובץ התצורה של האשכול.
REGION: האזור Google Cloud שבו פועל GKE On-Prem API ושבו מאוחסנים המטא-נתונים שלו. אם יצרתם את האשכול באמצעות לקוח API של GKE On-Prem, זה האזור שבחרתם כשיצרתם את האשכול. אם יצרתם את האשכול באמצעותgkectl, זה האזור שציינתם כששייכתם את האשכול ל-GKE On-Prem API.
משדרגים את מישור הבקרה של האשכול:
gcloud container vmware clusters upgrade USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
מחליפים את
TARGET_VERSIONבגרסה שאליה רוצים לשדרג. בוחרים את התיקון המומלץ מגרסת המשנה הרצויה.הפלט של הפקודה אמור להיראות כך:
Waiting for operation [projects/example-project-12345/locations/us-west1/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=REGION
שדרוג מאגרי צמתים
כדי לשדרג את מאגרי הצמתים אחרי שמישור הבקרה של אשכול המשתמש שודרג, מבצעים את השלבים הבאים:
מציגים רשימה של מאגרי הצמתים באשכול המשתמש:
gcloud container vmware node-pools list --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION
מריצים את הפקודה הבאה לכל מאגר צמתים שרוצים לשדרג:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
Terraform
מעדכנים את הרכיבים של ה-CLI של gcloud:
gcloud components updateאם עדיין לא עשיתם זאת, רושמים את אשכול האדמין ב-GKE On-Prem API. אחרי שהאשכול רשום ב-GKE On-Prem API, לא צריך לחזור על השלב הזה.
מורידים את הגרסה החדשה של הרכיבים ופורסים אותם באשכול האדמין:
gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=TARGET_VERSION
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_CLUSTER_NAME: השם של אשכול האדמין.
PROJECT_ID: המזהה של פרויקט המארח של ה-Fleet שאשכול המשתמש שייך אליו. זה הפרויקט שציינתם כשהאשכול נוצר. אם יצרתם את האשכול באמצעותgkectl, זהו מזהה הפרויקט בשדהgkeConnect.projectIDבקובץ התצורה של האשכול.
REGION: האזור Google Cloud שבו פועל GKE On-Prem API ושבו מאוחסנים המטא-נתונים שלו. אם יצרתם את האשכול באמצעות לקוח API של GKE On-Prem, זה האזור שבחרתם כשיצרתם את האשכול. אם יצרתם את האשכול באמצעותgkectl, זה האזור שציינתם כששייכתם את האשכול ל-GKE On-Prem API.
TARGET_VERSION: הגרסה שאליה רוצים לשדרג. בוחרים את התיקון המומלץ מגרסת המשנה הרצויה.
הפקודה הזו מורידה את גרסת הרכיבים שציינתם ב-
--required-platform-versionלאשכול האדמין, ואז פורסת את הרכיבים. הרכיבים האלה מאפשרים לאשכול האדמין לנהל אשכולות של משתמשים בגרסה הזו.בקובץ
main.tfשבו השתמשתם כדי ליצור את אשכול המשתמשים, משנים אתon_prem_versionבמשאב האשכול לגרסה החדשה.כדי לשדרג רק את מישור הבקרה, מוסיפים את הקוד הבא למשאב האשכול:
upgrade_policy { control_plane_only = true }מאתחלים ויוצרים את התוכנית ב-Terraform:
terraform initTerraform מתקין את כל הספריות הנדרשות, כמו הספק Google Cloud.
בודקים את ההגדרות ומשנים אותן לפי הצורך:
terraform planמחילים את תוכנית Terraform כדי לשדרג את מישור הבקרה של אשכול המשתמש:
terraform apply
שדרוג מאגרי צמתים
כדי לשדרג את מאגרי הצמתים אחרי שמישור הבקרה של אשכול המשתמש שודרג, מבצעים את השלבים הבאים:
ב-
main.tfבמשאב של כל מאגר צמתים שרוצים לשדרג, מוסיפים את הפרטים הבאים:on_prem_version = "TARGET_VERSION"
לדוגמה:
resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" { name = "my-nodepool" location = "us-west1" vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name config { replicas = 3 image_type = "ubuntu_containerd" enable_load_balancer = false } on_prem_version = "1.16.0-gke.0" }מאתחלים ויוצרים את התוכנית ב-Terraform:
terraform initבודקים את ההגדרות ומשנים אותן לפי הצורך:
terraform planמפעילים את תוכנית Terraform כדי לשדרג את מאגרי הצמתים:
terraform apply
פתרון בעיות
אם נתקלתם בבעיה אחרי שדרוג מאגר הצמתים, אתם יכולים לחזור לגרסה הקודמת. מידע נוסף זמין במאמר החזרה לגרסה קודמת של מאגר צמתים אחרי שדרוג.