אחרי שיוצרים אשכול, אפשר לשנות את מאגרי הצמתים שלו. אפשר לעדכן רק פרמטרים מסוימים של מאגר צמתים, כמו הגודל, מפתח ההצפנה וקבוצות האבטחה. במאמר הזה מוסבר איך לבצע את העדכונים האלה ועדכונים נפוצים אחרים במאגר צמתים.
עם זאת, במסמך הזה לא מופיעה רשימה מלאה של פקודות עדכון.
אם אתם צריכים לעדכן פרמטר שלא מתואר במאמר הזה, תוכלו לעיין במאמר gcloud container aws node-pools
update ובמאמר projects.locations.awsNodePools.patch.
לפני שמתחילים
כדי לעדכן מאגר צמתים, אתם צריכים את ההרשאה הבאה לניהול זהויות והרשאות גישה:
gkemulticloud.googleapis.com/awsNodePools.update.
הוראות לניהול הרשאות מופיעות במאמר הקצאת תפקידי IAM למשתמשים.
עדכון מאגר צמתים
בקטעים הבאים מוסבר איך לבצע עדכונים שונים למאגר צמתים. מאגר צמתים הוא קבוצה של צמתים באותו אשכול עם אותה הגדרה. כל הצמתים באשכול חייבים להיות שייכים למאגר צמתים.
אפשר לעדכן כמה פרמטרים של מאגר צמתים בו-זמנית על ידי ציון כולם באותה פקודה. עם זאת, כדי שההסבר יהיה ברור, במסמך הזה אנחנו מראים איך לעדכן פרמטר אחד בכל פעם.
שינוי הגרסה של מאגר הצמתים
ב-GKE ב-AWS, שינוי הגרסה של מאגר צמתים משמעותו שינוי גרסת GKE שפועלת בצמתים במאגר הצמתים הזה.
כדי לשנות את הגרסה של מאגר הצמתים, מציינים את הגרסה החדשה באמצעות הדגל node-version בפקודה הבאה:
gcloud container aws node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version NODE_POOL_VERSION
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים לעדכן. -
CLUSTER_NAME: השם של האשכול שאליו רוצים לצרף את מאגר הצמתים. -
GOOGLE_CLOUD_LOCATION: האזור הנתמך Google Cloud שמנהל את האשכול. לדוגמה,us-west1. -
NODE_POOL_VERSION: גרסת מאגר הצמתים החדשה שנתמכת.
עדכון סוג המכונה במאגר הצמתים
סוג המכונה במאגר הצמתים הוא הסוג של מכונת AWS EC2 שמשמש ליצירת הצמתים במאגר הצמתים. לדוגמה, סוג האינסטנס m5.xlarge כולל 4 מעבדי vCPU, זיכרון בנפח 16GB ואחסון SSD בנפח 32GB.
כדי לשנות את סוג האינסטנס של מאגר הצמתים, מציינים את סוג האינסטנס החדש באמצעות הדגל instance-type בפקודה הבאה:
gcloud container aws node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--instance-type=INSTANCE_TYPE
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים. -
CLUSTER_NAME: השם של האשכול. -
GOOGLE_CLOUD_LOCATION: Google Cloud האזור שמנהל את האשכול. -
INSTANCE_TYPE: סוג חדש של מופע מכונה ב-AWS עבור מאגר הצמתים הזה. לדוגמה,m5.xlarge.
עדכונים לסוג המופע של מאגר הצמתים לא יכולים לשנות את ארכיטקטורת ה-CPU הבסיסית של מופע EC2. לדוגמה, אם במאגר הצמתים המקורי שלכם נעשה שימוש במופעים עם מעבדי x86, סוג המופע המעודכן צריך להמשיך להשתמש במעבדי x86, ולא בארכיטקטורה אחרת.
רשימה מלאה של המקרים הנתמכים והארכיטקטורות הבסיסיות שלהם מופיעה במאמר בנושא סוגי מקרים נתמכים ב-AWS.
ביצוע רוטציה של מפתח ההצפנה של מאגר צמתים
למידע על איך לעדכן את מפתחות ההצפנה של KMS במאגר הצמתים, ראו רוטציית מפתחות.
החלפת קבוצות אבטחה של מאגר צמתים
כדי לעדכן את קבוצות האבטחה שמצורפות למאגר צמתים, מריצים את הפקודה הבאה:
gcloud container aws node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--security-group-ids=SECURITY_GROUP_IDS
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים לעדכן. -
CLUSTER_NAME: השם של האשכול. -
GOOGLE_CLOUD_LOCATION: Google Cloud האזור שמנהל את האשכול. -
SECURITY_GROUP_IDS: רשימה מופרדת בפסיקים של קבוצות אבטחה לצירוף למאגר הצמתים.
באשכולות שמריצים GKE בגרסה 1.25 ואילך, אפשר לבצע את העדכון באופן דינמי בלי להפעיל מחדש את הצמתים. זו הגישה המומלצת לאשכולות שמשתמשים ב-GKE מגרסה 1.25 ואילך.
כדי לבצע עדכונים דינמיים, לתפקיד סוכן השירות של ה-API צריכות להיות ההרשאות הבאות ב-AWS IAM:
ec2:ModifyInstanceAttributeec2:DescribeInstances
ההרשאות האלה מוקצות באופן אוטומטי לתפקיד סוכן השירות של ה-API אם בוחרים בתפקיד ברירת המחדל של סוכן השירות של ה-API כשיוצרים את האשכול.
באשכולות שמריצים גרסאות קודמות של GKE, או באשכולות שמריצים גרסה 1.25 ואילך אבל לסוכן שירות ה-API אין הרשאות לבצע עדכון דינמי, העדכון מתבצע באמצעות עדכון בהדרגה (rolling). עדכונים מדורגים משבשים את הפעילות יותר מעדכונים דינמיים, כי עדכונים מדורגים מפעילים מחדש צמתים, בעוד שעדכונים דינמיים לא עושים זאת. מידע נוסף על עדכונים מדורגים זמין במאמר בנושא עדכונים מדורגים.
הסרה של קבוצות אבטחה של מאגר צמתים
כדי להסיר את כל קבוצות האבטחה שאינן ברירת מחדל שמצורפות למאגר הצמתים, מריצים את הפקודה הבאה. מידע נוסף על קבוצות אבטחה שמוגדרות כברירת מחדל זמין במאמר בנושא קבוצות אבטחה של מאגרי צמתים.
gcloud container aws node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=GOOGLE_CLOUD_LOCATION \
--clear-security-group-ids
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים לעדכן. -
CLUSTER_NAME: השם של האשכול. -
GOOGLE_CLOUD_LOCATION: Google Cloud האזור שמנהל את האשכול.
שינוי הגודל של מאגר צמתים
כדי לשנות את הגודל של מאגר הצמתים (כלומר, את מספר הצמתים במאגר הצמתים), מקצים ערכים חדשים לדגלים min-nodes ו-max-nodes בפקודה הבאה:
gcloud container aws node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים שרוצים לעדכן. -
CLUSTER_NAME: השם של האשכול שאליו רוצים לצרף את מאגר הצמתים. -
GOOGLE_CLOUD_LOCATION: האזור הנתמך Google Cloud שמנהל את האשכול. לדוגמה,us-west1. -
MIN_NODES: המספר המינימלי של הצמתים שמאגר הצמתים יכול להכיל. הערך יכול להיות0או יותר. -
MAX_NODES: המספר המקסימלי של הצמתים שיכולים להיות במאגר הצמתים. הערך חייב להיות לפחות1, וגדול מהערך שלMIN_NODESאו שווה לו.
פרטים נוספים על שינוי הגודל של מאגרי צמתים
לפני שמשנים את הגודל של מאגר צמתים, חשוב להעריך את ההשלכות האפשריות על עומסי העבודה.
פעולות לשינוי גודל וההשלכות שלהן
כשמשנים את הגודל של מאגרי הצמתים, מופעלות פעולות שונות בהתאם להגדרה החדשה ולמצב הנוכחי של הצמתים. חשוב להבין את הפעולות האלה ואת ההשלכות שלהן:
- ללא שינוי: אם מספר הצמתים הנוכחי כבר תואם לטווח החדש שצוין, מערכת GKE on AWS לא מבצעת שינויים במספר הצמתים.
- הגדלת המינימום: אם מספר הצמתים המינימלי החדש גבוה ממספר הצמתים הקיים, GKE on AWS מוסיף צמתים בהדרגה עד שמגיע לגודל המינימלי החדש.
- הקטנת המספר המקסימלי: אם משנים את המספר המקסימלי של הצמתים לערך נמוך מהמספר הקיים, GKE on AWS מבצע את הפעולות הבאות:
- השבתה של המידרוג האוטומטי של האשכול.
- מגדירה את קבוצת ההתאמה האוטומטית לעומס (Auto Scaling) של מאגר הצמתים לגודל המינימלי שצוין.
- בחירה של צמתים נפרדים להסרה. כל צומת מגודר, המשימות שלו מועברות לצומת אחר ואז הוא מופסק. התהליך הזה נמשך עד שמגיעים לגודל המקסימלי שצוין.
- משנה את קבוצת ה-Auto Scaling של מאגר הצמתים כך שתתאים לגודל המקסימלי החדש.
- המידרוג האוטומטי של האשכול מופעל מחדש ברגע שהגודל המקסימלי מושג.
מידע נוסף על מידרוג אוטומטי של אשכולות זמין במאמר מידע על מידרוג אוטומטי של אשכולות.
הגנה על עומס העבודה במהלך שינוי הגודל
כדי להבטיח את הזמינות הרציפה של עומסי העבודה במהלך שינוי הגודל של מאגר הצמתים, GKE ב-AWS מספק את אמצעי ההגנה הבאים:
במהלך ניקוז הצומת, GKE ב-AWS מכבד את ההגדרה של
PodDisruptionBudgetלמשך שעה אחת לכל היותר. תאי Pod שנשארו בצומת אחרי התקופה הזו יימחקו.כשמגדירים הפעלה מחדש או הסרה של צמתים, GKE ב-AWS מבצע כיבוי מבוקר שלהם וממתין עד שעתיים. אם רכיבי ה-Pod נשארים בצומת אחרי התקופה הזו, המכונה הווירטואלית הבסיסית נמחקת.
בדיקת הסטטוס של מאגר הצמתים
כדי לוודא שהעדכון הצליח, אפשר לבדוק את הסטטוס של מאגר הצמתים על ידי הרצת הפקודה הבאה:
gcloud container aws node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים. -
CLUSTER_NAME: השם של האשכול. -
GOOGLE_CLOUD_LOCATION: Google Cloud האזור שמנהל את האשכול.
מערכת GKE ב-AWS מנסה לבצע את העדכונים המבוקשים במאגר הצמתים ואז מבצעת בדיקת תקינות. אם אחד משלבי העדכון נכשל, הסטטוס של מאגר הצמתים מסומן כDEGRADED.
ביטול פעולת עדכון
כדי לבטל עדכון של מאגר צמתים שנמצא בתהליך, צריך לזהות את שם הפעולה שנמצאת בתהליך. כדי להציג את הפעולות שמתבצעות ואת השמות שלהן, מריצים את הפקודה הבאה:
gcloud container aws operations list--filter="status=PENDING OR status=RUNNING"
--location GOOGLE_CLOUD_LOCATION
מחליפים את GOOGLE_CLOUD_LOCATION באזור הנתמך Google Cloud שבו מתבצע ניהול האשכול. לדוגמה, us-west1.
מחפשים את OPERATION_NAME של העדכון שרוצים לבטל בפלט של הפקודה. רשימת הפעולות זמינה במאמר gcloud container aws operations list.
אחרי שמזהים את OPERATION_NAME, אפשר לבטל את הפעולה באמצעות הפקודה הבאה:
gcloud container aws operations cancel OPERATION_NAME
--location GOOGLE_CLOUD_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
OPERATION_NAME: השם של פעולת העדכון. -
GOOGLE_CLOUD_LOCATION: האזור הנתמך Google Cloud שמנהל את האשכול. לדוגמה,us-west1.
שימו לב: ביטול של עדכון מאגר צמתים שנמצא בעיצומו לא מבטל עדכוני צמתים שכבר הושלמו. התוצאה יכולה להיות מאגר צמתים שעודכן באופן חלקי.