airflow.providers.cncf.kubernetes.pod_generator
¶
Pod 產生器。
此模組提供先前 Pod API 之間的介面,並輸出 kubernetes.client.models.V1Pod。優點是支援完整的 Kubernetes API,且無需編寫序列化。
模組內容¶
類別¶
包含 Kubernetes Airflow Worker 組態邏輯。 |
函數¶
|
正規化提供的標籤,使其長度和字元有效。 |
|
轉換日期時間字串以用作標籤。 |
將標籤轉換回日期時間物件。 |
|
|
合併物件。 |
|
將欄位值新增至現有物件。 |
屬性¶
- exception airflow.providers.cncf.kubernetes.pod_generator.PodMutationHookException[來源]¶
Bases:
airflow.exceptions.AirflowException
在 Pod Mutation Hook 執行期間發生例外狀況時引發。
- exception airflow.providers.cncf.kubernetes.pod_generator.PodReconciliationError[來源]¶
Bases:
airflow.exceptions.AirflowException
嘗試合併 pod 組態時遇到錯誤時引發。
- airflow.providers.cncf.kubernetes.pod_generator.make_safe_label_value(string)[來源]¶
正規化提供的標籤,使其長度和字元有效。
有效的標籤值必須少於 63 個字元,且必須為空或以英數字元 ([a-z0-9A-Z]) 開頭和結尾,中間可使用破折號 (-)、底線 (_)、點 (.) 和英數字元。
如果標籤值在安全處理後大於 63 個字元,或與傳送至此函數的原始值有任何差異,則我們需要截斷為 53 個字元,並附加唯一的雜湊值。
- airflow.providers.cncf.kubernetes.pod_generator.datetime_to_label_safe_datestring(datetime_obj)[來源]¶
轉換日期時間字串以用作標籤。
Kubernetes 不喜歡標籤中使用「:」,因為 ISO 日期時間格式使用「:」但不使用「_」,所以讓我們將「:」替換為「_」
- 參數
datetime_obj (datetime.datetime) – datetime.datetime 物件
- 傳回
代表日期時間的類 ISO 字串
- 傳回類型
- airflow.providers.cncf.kubernetes.pod_generator.label_safe_datestring_to_datetime(string)[來源]¶
將標籤轉換回日期時間物件。
Kubernetes 不允許標籤中使用「:」。ISO 日期時間格式使用「:」但不使用「_」,讓我們將「:」替換為「_」
- 參數
string (str) – str
- 傳回
datetime.datetime 物件
- 傳回類型
- class airflow.providers.cncf.kubernetes.pod_generator.PodGenerator(pod=None, pod_template_file=None, extract_xcom=True)[來源]¶
包含 Kubernetes Airflow Worker 組態邏輯。
代表 Kubernetes pod 並管理單個 pod 的執行。任何容器特定的組態都會套用至容器清單中的第一個容器。
- 參數
- static reconcile_pods(base_pod, client_pod)[來源]¶
合併 Kubernetes Pod 物件。
- 參數
base_pod (kubernetes.client.models.V1Pod) – 具有基本屬性,如果用戶端 pod 中存在這些屬性,則會覆寫這些屬性;如果用戶端 pod 中不存在這些屬性,則會保留這些屬性
client_pod (kubernetes.client.models.V1Pod | None) – 用戶端想要建立的 pod。
- 傳回
合併後的 pod
- 傳回類型
kubernetes.client.models.V1Pod
這不能以遞迴方式完成,因為某些欄位會被覆寫,而某些欄位會被串連。
- static reconcile_metadata(base_meta, client_meta)[來源]¶
合併 Kubernetes Metadata 物件。
- 參數
base_meta – 具有基本屬性,如果用戶端 meta 中存在這些屬性,則會覆寫這些屬性;如果用戶端 meta 中不存在這些屬性,則會保留這些屬性
client_meta – 用戶端想要建立的規格。
- 傳回
合併後的規格
- static reconcile_specs(base_spec, client_spec)[來源]¶
合併 Kubernetes PodSpec 物件。
- 參數
base_spec (kubernetes.client.models.V1PodSpec | None) – 具有基本屬性,如果用戶端 spec 中存在這些屬性,則會覆寫這些屬性;如果用戶端 spec 中不存在這些屬性,則會保留這些屬性
client_spec (kubernetes.client.models.V1PodSpec | None) – 用戶端想要建立的規格。
- 傳回
合併後的規格
- 傳回類型
kubernetes.client.models.V1PodSpec | None
- static reconcile_containers(base_containers, client_containers)[來源]¶
合併 Kubernetes Container 物件。
- 參數
- 傳回
合併後的容器
- 傳回類型
list[kubernetes.client.models.V1Container]
遞迴執行容器清單。
- classmethod construct_pod(dag_id, task_id, pod_id, try_number, kube_image, date, args, pod_override_object, base_worker_pod, namespace, scheduler_job_id, run_id=None, map_index=-1, *, with_mutation_hook=False)[來源]¶
建立 Pod。
- 透過從 3 個位置收集和整合組態來建構 pod
airflow.cfg
executor_config
動態引數
- static serialize_pod(pod)[來源]¶
將 k8s.V1Pod 轉換為 JSON 可序列化字典。
- 參數
pod (kubernetes.client.models.V1Pod) – k8s.V1Pod 物件
- 傳回
以 dict 形式傳回的 pod 序列化版本
- 傳回類型
- static deserialize_model_file(path)[來源]¶
從檔案產生 Pod。
- 參數
path (str) – 檔案的路徑
- 傳回
kubernetes.client.models.V1Pod
- 傳回類型
kubernetes.client.models.V1Pod
- static deserialize_model_dict(pod_dict)[來源]¶
將 Python 字典還原序列化為 k8s.V1Pod。
不幸的是,我們需要存取 Kubernetes 用戶端的私有方法
_ApiClient__deserialize_model
。此問題在此處追蹤;https://github.com/kubernetes-client/python/issues/977。- 參數
pod_dict (dict | None) – k8s.V1Pod 物件的序列化字典
- 傳回
還原序列化的 k8s.V1Pod
- 傳回類型
kubernetes.client.models.V1Pod