במאמר הזה נסביר איך לנהל את האשכולות ב-Google Kubernetes Engine (GKE). כדי להבין איך אשכולות פועלים, אפשר לעיין במאמר בנושא ארכיטקטורת אשכולים.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
הצגת האשכולות
gcloud
כדי להציג אשכול ספציפי, מריצים את הפקודה הבאה:
gcloud container clusters describe CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים.
-
כדי להציג רשימה של כל האשכולות בפרויקט באזור או באזור זמינות כלשהו, מריצים את הפקודה הבאה:
gcloud container clusters listכדי להציג רשימה של אשכולות שנמצאים באזור או בתחום ספציפיים, מריצים את הפקודה הבאה:
gcloud container clusters list \ --location=CONTROL_PLANE_LOCATION
המסוף
כדי לראות את האשכולות, נכנסים לדף Google Kubernetes Engine במסוף Cloud de Confiance .
מעבר אל Google Kubernetes Engine
כדי לראות מידע נוסף על אשכול, בוחרים את האשכול מהרשימה.
הגדרת אשכול ברירת מחדל ל-kubectl
אם יש לכם כמה אשכולות, אתם יכולים להגדיר אשכול ברירת מחדל לכלי kubectl של שורת הפקודה.
מידע נוסף זמין במאמר בנושא הגדרת אשכול ברירת מחדל לפקודות kubectl.
הגדרת אשכול ברירת מחדל ל-gcloud
כדי להגדיר אשכול ברירת מחדל לפקודות gcloud, מריצים את הפקודה הבאה:
gcloud config set container/cluster CLUSTER_NAME
מחליפים את CLUSTER_NAME בשם האשכול.
שדרוג אשכולות
כברירת מחדל, מערכת GKE משדרגת את האשכולות באופן אוטומטי. עם זאת, אתם יכולים לשדרג בעצמכם את אשכולות Standard. מידע נוסף זמין במאמר בנושא שדרוג ידני של אשכול.
למידע נוסף על שדרוג אשכולות, אפשר לעיין במאמר בנושא שיטות מומלצות לשדרוג אשכולות.
הוספה או הסרה של אזורים באשכול רגיל
בקטעים הבאים מוסבר איך להוסיף או להסיר אזורים של אשכולות. כל האזורים צריכים להיות באזור של האשכול.
שינוי אזורים באשכולות אזוריים
במקרה של אשכולות אזוריים קיימים, אפשר להוסיף או להסיר אזורים.
gcloud
כדי להוסיף או להסיר אזורים לאשכול אזורי, משתמשים בפקודה gcloud container
clusters update:
gcloud container clusters update CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--node-locations COMPUTE_ZONE1,COMPUTE_ZONE2
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם שתבחרו לאשכול. -
CONTROL_PLANE_LOCATION: האזור של מישור הבקרה של האשכול ב-Compute Engine. -
COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: האזורים שבהם נוצרים הצמתים. אפשר לציין כמה אזורים שרוצים עבור האשכול. כל האזורים צריכים להיות באותו אזור שבו נמצא מישור הבקרה של האשכול, שמוגדר באמצעות הדגל--location. במקרה של אשכולות אזוריים,--node-locationsחייב להכיל את האזור הראשי של האשכול.
לדוגמה, הפקודה example-cluster פועלת ב-us-central1-a.
כדי להוסיף עוד שני אזורים לאשכול, מריצים את הפקודה הבאה:
gcloud container clusters update example-cluster \
--location us-central1-a
--node-locations us-central1-a,us-central1-b,us-central1-c
דוגמה נוספת: example-cluster פועל ב-us-central1-a, ב-us-central1-b וב-us-central1-c. אם רוצים שהאשכול יפעל רק ב-us-central1-a וב-us-central1-b, מריצים את הפקודה הבאה:
gcloud container clusters update example-cluster \
--location us-central1-a \
--node-locations us-central1-a,us-central1-b
המסוף
כדי להוסיף או להסיר אזורים באשכול קיים, מבצעים את השלבים הבאים:
נכנסים לדף Google Kubernetes Engine במסוף Cloud de Confiance .
לצד האשכול שרוצים לערוך, לוחצים על more_vert פעולות ואז על edit עריכה.
בכרטיסייה Details (פרטים), בשדה Default node zones (אזורי ברירת מחדל של צמתים), לוחצים על edit Edit node pools (עריכת מאגרי צמתים).
בוחרים את האזורים הרצויים ושומרים את השינויים.
שינוי האזורים באשכולות אזוריים
בשלב הזה, אפשר לשנות את האזורים של אשכולות אזוריים קיימים רק באמצעות הפקודה gcloud.
כדי להוסיף או להסיר אזורים לאשכול אזורי, משתמשים בפקודה gcloud container
clusters update עם הדגל --node-locations:
gcloud container clusters update CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--node-locations COMPUTE_ZONE1,COMPUTE_ZONE2
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
CONTROL_PLANE_LOCATION: האזור של Compute Engine במישור הבקרה של האשכול. -
COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: האזורים באזור מישור הבקרה שבו נוצרים הצמתים. התחומים(zones) צריכים להיות באותוCONTROL_PLANE_LOCATIONכמו מישורי הבקרה של האשכול, שמוגדרים באמצעות הדגל--location.
לדוגמה, הפונקציה example-cluster פועלת ב-us-central1-a וב-us-central1-b. כדי להוסיף את us-central1-c, מריצים את הפקודה הבאה:
gcloud container clusters update example-cluster \
--location us-central1 \
--node-locations us-central1-a,us-central1-b,us-central1-c
דוגמה נוספת: example-cluster פועל ב-us-central1-a, ב-us-central1-b וב-us-central1-c. אם רוצים שהאשכול יפעל רק ב-us-central1-a וב-us-central1-b, מריצים את הפקודה הבאה:
gcloud container clusters update example-cluster \
--location us-central1 \
--node-locations us-central1-a,us-central1-b
שינוי הגודל של אשכולות
אפשר לשנות את הגודל של אשכול רגיל כדי להגדיל או להקטין את מספר הצמתים שלו. לדוגמה, אם רוצים להפסיק את צריכת המשאבים של האשכול בלי למחוק אותו, אפשר להקטין את מספר הצמתים לאפס. מידע נוסף על שינוי הגודל זמין במאמר בנושא שינוי הגודל של אשכול.
גודל האשכולות במצב Autopilot נקבע באופן אוטומטי על סמך מפרטי ה-Pod, כך שלא צריך לדאוג לשינוי הגודל של האשכול. לדוגמה, אם משנים את מספר הרפליקות של ה-Pod או את המשאבים שהוא מבקש, גודל האשכול יגדל או יקטן בהתאם.
כדי לבצע אופטימיזציה של האשכולות בצורה יעילה יותר, אפשר גם להשתמש ב-התאמה אנכית של קבוצות Pod לעומס (VPA). הכלי לשינוי גודל אוטומטי יכול להמליץ על ערכים לבקשות ולמגבלות של CPU וזיכרון, או לעדכן את הערכים באופן אוטומטי.
מחיקת אשכולות
כשצריך, אפשר למחוק אשכול. מידע נוסף זמין במאמר בנושא מחיקת אשכול.
שימוש במדיניות דחייה כדי למנוע מחיקה של אשכולות
אתם יכולים להשתמש בכללי מדיניות הדחייה של IAM כדי למנוע מחיקה של אשכולות קריטיים מסוימים, ללא קשר לחשבון המשתמש שמנסה לבצע את המחיקה. כדי לטרגט אשכולות ספציפיים במדיניות של דחיית גישה, מוסיפים תג לאשכולות האלה. לאחר מכן, משתמשים בתנאי דחייה כדי להחיל את מדיניות הדחייה רק על אשכולות שיש להם את התג הזה.
כדי להגן על אשכול ספציפי מפני מחיקה, פועלים לפי השלבים הבאים:
יוצרים ומגדירים מפתח תג כדי לזהות אשכולות מוגנים. לדוגמה, אפשר ליצור מפתח תג בשם
do_not_delete.כדי ליצור מדיניות דחייה של IAM, בוחרים באחת מהאפשרויות הבאות:
המסוף
במסוף Cloud de Confiance , עוברים לכרטיסייה Deny בדף IAM.
לוחצים על יצירת מדיניות דחייה. ייפתח הדף Create deny policy.
בשדה ID (מזהה), מציינים מזהה ייחודי שלא ניתן לשינוי למדיניות הדחייה.
בקטע New deny rule (כלל חדש של דחייה), מבצעים את הפעולות הבאות:
בשדה Denied principals, מציינים
principalSet://goog/public:all, שכולל כל חשבון משתמש.בקטע Denied permissions, ברשימה הנפתחת Permission 1, מוצאים את ההרשאה
container.googleapis.com/clusters.deleteובוחרים אותה.לוחצים על הוספת תנאי לדחייה. נפתחת החלונית הוספת תנאי דחייה.
מציינים שם אינפורמטיבי לתנאי, למשל
Cluster has the do_not_delete tag.בכרטיסייה Condition builder (כלי ליצירת תנאים), בתפריט הנפתח Condition type 1 (סוג תנאי 1), בוחרים באפשרות Tag (תג).
ברשימה הנפתחת Operator, בוחרים באפשרות Has key.
ברשימה הנפתחת Key path, בוחרים את מפתח התג שהוספתם לאשכול, כמו
do_not_delete.לוחצים על Save.
לוחצים על יצירה.
gcloud
יוצרים קובץ JSON שמכיל את מדיניות הדחייה הבאה:
{ "displayName": "Prevent cluster deletion based on tag", "rules": [ { "description": "Prevent cluster deletion based on tag", "deniedPrincipals": [ "principalSet://goog/public:all" ], "deniedPermissions": [ "container.googleapis.com/clusters.delete" ], "denialCondition": { "title": "Cluster has the do_not_delete tag", "expression": "resource.hasTagKey('TAG_KEY_NAME') } } ] }מחליפים את
TAG_KEY_NAMEבנתיב למפתח התג שיצרתם.יוצרים את מדיניות הדחייה באמצעות הפקודה
gcloud iam policies create:gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies --policy-file=POLICY_FILEמחליפים את מה שכתוב בשדות הבאים:
-
POLICY_ID: מזהה של מדיניות הדחייה. -
ATTACHMENT_POINT: הארגון, התיקייה או הפרויקט שאליהם רוצים לצרף את מדיניות הדחייה. לדוגמה, אם מצרפים את מדיניות הדחייה לתיקייה, המדיניות חלה על אשכולות בכל פרויקט בתיקייה הזו. מידע נוסף זמין במאמר בנושא נקודת הצמדה. -
POLICY_FILE: הנתיב לקובץ ה-JSON שיצרתם בשלב הקודם.
-
אחרי שיוצרים את מדיניות הדחייה, אף אחד לא יכול למחוק אשכול עם מפתח התג שצוין בתנאי הדחייה. כל ניסיון למחוק את האשכול ייכשל עם הודעת השגיאה Permission denied. כדי לאפשר מחיקה של אשכול, צריך לנתק את מפתח התג הזה מהאשכול.
הוספת אשכולות ל-Fleet
אם הארגון שלכם משתמש בכמה אשכולות, תוכלו לפשט את הניהול של כמה אשכולות על ידי הוספת האשכולות לצי: קיבוץ לוגי של אשכולות Kubernetes. יצירת צי מאפשרת לארגון לשדרג את הניהול מאשכולות בודדים לקבוצות שלמות של אשכולות, ומאפשרת להשתמש בתכונות שמופעלות בצי, כמו Multi Cluster Ingress, Config Sync ו-Policy Controller.
אפשר להוסיף אשכולות GKE ל-Fleet באמצעות המסוףCloud de Confiance , באמצעות ה-CLI של gcloud או באופן הצהרתי באמצעות Terraform או Config Connector.
מידע נוסף על אופן הפעולה של Fleet זמין במאמר ניהול Fleet, ומידע על יצירת Fleet זמין במאמר יצירת Fleet כדי לפשט את הניהול של כמה אשכולות.