Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
במאמר הזה מוסבר איך להשתמש באופרטורים של Google Kubernetes Engine כדי ליצור אשכולות ב-Google Kubernetes Engine ולהפעיל Pods של Kubernetes באשכולות האלה.
אופרטורים של Google Kubernetes Engine מריצים פודים של Kubernetes באשכול שצוין, שיכול להיות אשכול נפרד שלא קשור לסביבה שלכם.
לעומת זאת, KubernetesPodOperator מריץ את ה-Pods של Kubernetes באשכול של הסביבה שלכם.
בדף הזה מוסבר על DAG לדוגמה שיוצר אשכול Google Kubernetes Engine עם GKECreateClusterOperator, משתמש ב-GKEStartPodOperator עם ההגדרות הבאות ואז מוחק אותו באמצעות GKEDeleteClusterOperator:
- הגדרה מינימלית: הגדרה של הפרמטרים הנדרשים בלבד.
- הגדרת תבנית: משתמשים בפרמטרים שאפשר ליצור מהם תבנית באמצעות Jinja.
- הגדרת זיקה של Pod: מגבילה את הצמתים הזמינים לתזמון של Pods.
- הגדרה מלאה: כוללת את כל ההגדרות.
לפני שמתחילים
הגדרת אופרטור GKE
כדי לפעול לפי הדוגמה הזו, צריך להציב את כל gke_operator.py
הקובץ בתיקייה dags/ של הסביבה או להוסיף את הקוד הרלוונטי ל-DAG.
יצירת אשכול
הקוד שמוצג כאן יוצר אשכול Google Kubernetes Engine עם שני מאגרי צמתים,
pool-0 ו-pool-1, שלכל אחד מהם יש צומת אחד. במקרה הצורך, אפשר להגדיר פרמטרים אחרים מתוך Google Kubernetes Engine API כחלק מ-body.
מומלץ להשתמש באשכולות אזוריים. אשכולות אזוריים חשופים יותר לכשלים אזוריים. לדוגמה, יכול להיות שתרצו להשתמש באזור us-central1 עבור האשכול במקום באזור us-central1-a.
מידע נוסף על שיקולים ספציפיים לאזור זמין במאמר מיקום גיאוגרפי ואזורים.
הפעלת עומסי עבודה באשכול
בקטעים הבאים מוסבר על כל הגדרה של GKEStartPodOperator בדוגמה. מידע על כל משתנה הגדרה זמין במאמר Airflow reference for GKE operators.
הגדרה מינימלית
כדי להפעיל Pod באשכול GKE באמצעות GKEStartPodOperator, נדרשות רק האפשרויות project_id, location, cluster_name, name, namespace, image ו-task_id.
כשמציבים את קטע הקוד הבא ב-DAG, המשימה pod-ex-minimum מצליחה כל עוד הפרמטרים שצוינו קודם מוגדרים ותקינים.
הגדרת תבנית
Airflow תומך בשימוש ב-Jinja Templating.
צריך להצהיר על המשתנים הנדרשים (task_id, name, namespace ו-image) באמצעות האופרטור. כפי שאפשר לראות בדוגמה הבאה, אפשר ליצור תבנית לכל הפרמטרים האחרים באמצעות Jinja, כולל cmds, arguments ו-env_vars.
בלי לשנות את ה-DAG או את הסביבה, המשימה ex-kube-templates נכשלת. מגדירים משתנה Airflow בשם my_value כדי שה-DAG הזה יצליח.
כדי להגדיר את my_value באמצעות gcloud או ממשק המשתמש של Airflow:
gcloud
מזינים את הפקודה הבאה:
gcloud composer environments run ENVIRONMENT \
--location LOCATION \
variables set -- \
my_value example_value
מחליפים את:
-
ENVIRONMENTבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת.
ממשק המשתמש של Airflow
בממשק המשתמש של Airflow 3:
בסרגל הכלים, בוחרים באפשרות אדמין > משתנים.
לוחצים על הוספת משתנה.
בדף Add Variable (הוספת משתנה), מזינים את הפרטים הבאים:
- מקש:
my_value - ערך:
example_value
- מקש:
לוחצים על Save.
בממשק המשתמש של Airflow 2:
בסרגל הכלים, בוחרים באפשרות אדמין > משתנים.
בדף List Variable (משתנה רשימה), לוחצים על Add a new record (הוספת רשומה חדשה).
בדף Add Variable (הוספת משתנה), מזינים את הפרטים הבאים:
- מקש:
my_value - ערך:
example_value
- מקש:
לוחצים על Save.
הגדרת התבנית:
הגדרת זיקה של Pod
כשמגדירים את הפרמטר affinity ב-GKEStartPodOperator, אפשר לקבוע באילו צמתים יתוזמנו הפודים, למשל רק בצמתים במאגר צמתים מסוים. כשיוצרים את האשכול, נוצרים שני מאגרי צמתים בשמות pool-0 ו-pool-1. האופרטור הזה קובע ש-Pods חייבים לפעול רק ב-pool-1.
הגדרה מלאה
בדוגמה הזו מוצגים כל המשתנים שאפשר להגדיר ב-GKEStartPodOperator. לא צריך לשנות את הקוד כדי שהמשימה ex-all-configs תצליח.
פרטים על כל משתנה זמינים במאמר חומר העזר בנושא אופרטורים של GKE ב-Airflow.
מחיקת האשכול
הקוד שמוצג כאן מוחק את האשכול שנוצר בתחילת המדריך.