בדף הזה מוסבר איך ליצור אשכול אלפא של Google Kubernetes Engine (GKE), שהוא אשכול GKE עם תכונות וממשקי API של אלפא ב-Kubernetes. ב-alpha cluster, כל שערי התכונות בשלב אלפא שזמינים בגרסת Kubernetes מופעלים כברירת מחדל. גם שערי תכונות בגרסת בטא שמופעלים ב-Kubernetes כברירת מחדל מופעלים. אפשר לשנות את ברירות המחדל של GKE כדי להגדיר אילו תכונות יהיו זמינות. מידע נוסף על שערי התכונות שזמינים בגרסאות ספציפיות ועל תכונות הבטא שמופעלות כברירת מחדל זמין במאמר שערי תכונות לתכונות אלפא או בטא במסמכי התיעוד של Kubernetes.
מידע נוסף על אופן הפעולה של אשכולות GKE ועל אופן הבחירה של סוג האשכול ליצירה זמין במאמרים ארכיטקטורת אשכול GKE ומידע על אפשרויות הגדרת אשכולות.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- מוודאים שיש לכם את ההרשאה הנכונה ליצירת אשכולות. לפחות, צריך להיות לכם תפקיד אדמין באשכול Kubernetes Engine.
- מוודאים שאתם מכירים את המגבלות של אשכולות אלפא.
הגדרה של חשבונות שירות ב-IAM ל-GKE
GKE משתמש בחשבונות שירות של IAM שמצורפים לצמתים כדי להריץ משימות מערכת כמו רישום ביומן ומעקב. לפחות, חשבונות השירות של הצמתים צריכים לקבל את התפקיד Kubernetes Engine Default Node Service Account (roles/container.defaultNodeServiceAccount) בפרויקט. כברירת מחדל, GKE משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, שנוצר באופן אוטומטי בפרויקט, כחשבון השירות של הצומת.
כדי להעניק את התפקיד roles/container.defaultNodeServiceAccount לחשבון השירות שמוגדר כברירת המחדל של Compute Engine, מבצעים את השלבים הבאים:
המסוף
- נכנסים לדף Welcome:
- בשדה מספר הפרויקט, לוחצים על העתקה ללוח.
- נכנסים לדף IAM:
- לוחצים על Grant access.
- בשדה New principals, מציינים את הערך הבא:
מחליפים אתPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERבמספר הפרויקט שהעתקתם. - בתפריט Select a role (בחירת תפקיד), בוחרים בתפקיד Kubernetes Engine Default Node Service Account (חשבון השירות שמשמש כברירת מחדל לצומת ב-Kubernetes Engine).
- לוחצים על Save.
gcloud
- איך מוצאים את Google Cloud מספר הפרויקט:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
מחליפים את
PROJECT_IDבמזהה הפרויקט.הפלט אמור להיראות כך:
12345678901
- מקצים לחשבון השירות של Compute Engine שמוגדר כברירת מחדל את התפקיד
roles/container.defaultNodeServiceAccount:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
מחליפים את
PROJECT_NUMBERבמספר הפרויקט מהשלב הקודם.
יצירת אשכול אלפא
אפשר ליצור אשכול אלפא באמצעות מסוף Google Cloud או ה-CLI של gcloud. כדי ליצור אשכול שבו שערים של תכונות מופעלים או מושבתים באופן שונה מערכי ברירת המחדל, משתמשים ב-CLI של gcloud.
המסוף
נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .
בקטע Cluster basics (הגדרות בסיסיות של אשכול), מבצעים את הפעולות הבאות:
- מזינים את השם של האשכול.
- בשדה Location type, בוחרים באפשרות Zonal ואז בוחרים את האזור של האשכול.
- אם יוצרים אשכול רב-אזורי, מסמנים את התיבה Specify default node locations (ציון מיקומי צמתים שמוגדרים כברירת מחדל) ובוחרים אזורים נוספים שבהם רוצים להפעיל את מאגרי הצמתים.
ברשימה הנפתחת ערוץ הפצה, בוחרים באפשרות ללא ערוץ.
אופציונלי: מציינים גרסת מישור בקרה מהרשימה הנפתחת Version.
אופציונלי: מגדירים הגדרות אחרות לאשכול החדש.
אופציונלי: אם רוצים לרשום את האשכול החדש לצי, עוברים לקטע Fleet registration ופועלים לפי ההוראות במסוף בנושא Create and register a new cluster כדי להשלים את רישום האשכול. Google Cloud
בחלונית הניווט, בקטע Node Pools (מאגרי צמתים), לוחצים על default-pool (מאגר ברירת המחדל).
בקטע פרטי מאגר צמתים, ממלאים את הפרטים הבאים:
- מזינים שם למאגר הצמתים שמוגדר כברירת מחדל.
- אופציונלי: בוחרים את גרסת הצומת.
- מזינים את מספר הצמתים שרוצים ליצור באשכול. צריכה להיות לכם מכסת משאבים זמינה לצמתים ולמשאבים שלהם (כמו מסלולי חומת אש).
- אופציונלי: אפשר להשבית את השדרוגים האוטומטיים של הצמתים, אבל מומלץ לעיין בשיקולים לפני השבתת השדרוגים האוטומטיים של הצמתים לפני שבוחרים באפשרות הזו.
- מבטלים את הסימון של האפשרויות הפעלת שדרוג אוטומטי והפעלת תיקון אוטומטי.
בחלונית הניווט, בקטע Node Pools (מאגרי צמתים), לוחצים על Nodes (צמתים).
ברשימה הנפתחת סוג התמונה, בוחרים באפשרות תמונת הצומת.
בוחרים את Machine configuration שיוגדר כברירת מחדל לשימוש במופעים. החיוב על כל סוג מכונה מתבצע באופן שונה. סוג המכונה המוגדר כברירת מחדל הוא
e2-medium. למידע על תמחור סוגי מכונות, אפשר לעיין בגיליון המחירים של סוגי המכונות.ברשימה הנפתחת סוג דיסק האתחול, בוחרים את סוג הדיסק.
מזינים את גודל דיסק האתחול.
אופציונלי: בחלונית הניווט, בקטע Node Pools, לוחצים על Security.
- אופציונלי, אפשר לציין חשבון שירות מותאם אישית ב-IAM עבור הצמתים:
- בדף הגדרות מתקדמות, מרחיבים את הקטע אבטחה.
- בתפריט Service account בוחרים את חשבון השירות המועדף.
מומלץ מאוד לציין חשבון שירות IAM עם הרשאות מינימליות, שהצמתים יוכלו להשתמש בו במקום בחשבון השירות שמוגדר כברירת מחדל של Compute Engine. במאמר שימוש בחשבון שירות עם הרשאות מינימליות מוסבר איך ליצור חשבון שירות עם הרשאות מינימליות.
בחלונית הניווט, בקטע Cluster, לוחצים על Features.
לוחצים על הפעלת תכונות אלפא של Kubernetes באשכול הזה.
קוראים את האזהרה ומסמנים את התיבה הבנתי את ההשלכות.
לוחצים על יצירה.
gcloud
מריצים את הפקודה הבאה:
gcloud container clusters create CLUSTER_NAME \
--enable-kubernetes-alpha \
--no-enable-autorepair \
--no-enable-autoupgrade \
--location CONTROL_PLANE_LOCATION [\
--alpha-cluster-feature-gates FEATURE_GATES_LIST]
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם שתבחרו לאשכול. -
CONTROL_PLANE_LOCATION: המיקום של מישור הבקרה של האשכול ב-Compute Engine. מציינים אזור לאשכולות אזוריים או אזור זמין לאשכולות אזוריים. -
--cluster-version VERSION: (אופציונלי) מציין את הגרסה של GKE להרצה באשכול. אם לא מציינים גרסה, האשכול מריץ את גרסת הטלאי שמוגדרת כברירת מחדל ליצירת אשכול עבור No channel (ללא ערוץ), כמו שמוצג בטבלה Current versions (גרסאות נוכחיות).
FEATURE_GATES_LIST: רשימת השערים לתכונות שרוצים להפעיל או להשבית באופן שונה מערכי ברירת המחדל. כל מחרוזת מייצגת הפעלה או השבתה של Feature Gate. לדוגמה,featureX=true, featureY=false. אם לא מציינים את הדגל הזה, GKE יוצר את האשכול באמצעות ערכי ברירת המחדל של GKE, כלומר כל שערי התכונות בגרסת האלפא שזמינים בגרסת Kubernetes מופעלים. גם שערי התכונות בגרסת הבטא שמופעלים כברירת מחדל על ידי Kubernetes מופעלים. מידע נוסף על האפשרויות של Feature Gate שזמינות בגרסאות ספציפיות, ועל תכונות בטא שמופעלות כברירת מחדל, זמין במאמר Feature Gate לתכונות אלפא או בטא במסמכי התיעוד של Kubernetes. כשמציינים את ה-flag הזה, משנים את האופן שבו שערי התכונות מוגדרים כברירת מחדל על ידי GKE, כך ששערי התכונות שמופעלים יהיו שונים. מידע נוסף זמין במאמר בנושא שערי תכונות ואשכולות אלפא.
מומלץ מאוד לציין חשבון שירות IAM עם הרשאות מינימליות, שהצמתים יוכלו להשתמש בו במקום בחשבון השירות שמוגדר כברירת מחדל של Compute Engine. במאמר שימוש בחשבון שירות עם הרשאות מינימליות מוסבר איך ליצור חשבון שירות עם הרשאות מינימליות.
כדי לציין חשבון שירות מותאם אישית ב-CLI של gcloud, מוסיפים את הדגל הבא לפקודה:
--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comמחליפים את SERVICE_ACCOUNT_NAME בשם של חשבון השירות עם ההרשאות המינימליות.
מוצגת לכם אזהרה שלפיה לא בוצע שדרוג של אשכול אלפא והוא יימחק אחרי 30 יום:
This will create a cluster with Kubernetes alpha features enabled.
- This cluster will not be covered by the GKE SLA and should
not be used for production workloads.
- You will not be able to upgrade the master or nodes.
- The cluster will be deleted after 30 days.
אינטראקציה עם אשכול באמצעות kubectl
אחרי שיוצרים אשכול, צריך להגדיר את kubectl לפני שאפשר ליצור אינטראקציה עם האשכול משורת הפקודה.
בדיקת מצב Feature Gate באשכול אלפא
באמצעות אשכולות אלפא, אתם יכולים להפעיל או להשבית באופן סלקטיבי את שערי התכונות. מידע נוסף זמין במאמר בנושא שערי תכונות ואשכולות אלפא.
כדי לבדוק את מצב שער התכונה באשכול, אפשר לעיין במאמר בדיקת מצב שער התכונה.
איך בודקים מתי התוקף של אשכול אלפא פג
כדי לבדוק מתי יפוג התוקף של אשכולות אלפא, מריצים את הפקודה הבאה:
gcloud container clusters list
פתרון בעיות ביצירת אשכול אלפא עם שערים של תכונות
אם מנסים ליצור אשכול עם Feature Gate לא תקין, או עם Feature Gate שלא נתמך בגרסת Kubernetes של האשכול, יכול להיות שהאשכול ייווצר במצב שגיאה.
ב-Cloud Logging תוכלו למצוא הודעה דומה להודעה הבאה:
failed to set feature gates from initial flags-based config:
unrecognized feature gate: UNRECOGNIZED_FEATURE_GATE_NAME
אם נתקלים בשגיאה הזו, צריך למחוק את האשכול שנכשל. בודקים את האיות ואת התאימות של שערי התכונות לגרסת Kubernetes שצוינה. אחר כך מנסים ליצור שוב את האשכול.