You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by GitBox <gi...@apache.org> on 2022/03/16 00:59:27 UTC

[GitHub] [airflow] johngtam opened a new issue #22298: pod_override ignores namespace configuration

johngtam opened a new issue #22298:
URL: https://github.com/apache/airflow/issues/22298


   ### Apache Airflow version
   
   2.0.2
   
   ### What happened
   
   I've attempted to use the pod_override as per the documentation [here](https://airflow.apache.org/docs/apache-airflow/2.0.2/executor/kubernetes.html#pod-override). Labels, annotations, and service accounts work. However, attempting to override the namespace does not: I would expect the pod to be created in the namespace that I've set `pod_override` to, but it does not. 
   
   My speculation is that the `pod_generator.py` code is incorrect [here](https://github.com/apache/airflow/blob/2.0.2/airflow/kubernetes/pod_generator.py#L405). The order of reconciliation goes: 
   
   ```
           # Reconcile the pods starting with the first chronologically,
           # Pod from the pod_template_File -> Pod from executor_config arg -> Pod from the K8s executor
           pod_list = [base_worker_pod, pod_override_object, dynamic_pod]
   ```
   
   Note that dynamic pod takes precedence. Note that `dynamic_pod` has the namespace from whatever namespace is [passed](https://github.com/apache/airflow/blob/2.0.2/airflow/kubernetes/pod_generator.py#L373) in. It is initialized from `self.kube_config.kube_namespace` [here](https://github.com/apache/airflow/blob/ac77c89018604a96ea4f5fba938f2fbd7c582793/airflow/executors/kubernetes_executor.py#L245). Therefore, the kube config's namespace takes precedence and will override the namespace of the `pod_override`, because only one namespace can exist (unlike labels and annotations, which can be additive). This unfortunately means pods created by the KubernetesExecutor will run in the config's namespace. 
   
   This code flow remains the same on the latest version of Airflow -- I speculate that the bug still might be in. 
   
   ### What you think should happen instead
   
   If we use pod_override with a namespace, the namespace where the pod is run should take the namespace desired in pod_override.
   
   ### How to reproduce
   
   Create a DAG using a PythonOperator or any other operator. Use the pod_override:
   
   ```
           "pod_override": k8s.V1Pod(
                               metadata=k8s.V1ObjectMeta(namespace="fakenamespace",
                                                         annotations={"test": "annotation"},
                                                         labels={'foo': 'barBAZ'}),
                               spec=k8s.V1PodSpec(
                                       containers=[
                                           k8s.V1Container(
                                               name="base"
                                           )
                                       ],
                                       service_account_name="foobar"
                               )
                           )
   ```
   
   Look at the k8s spec file or use `kubectl` to verify where this pod is attempted to start running. It should be `fakenamespace`, but instead will likely be in the same namespace as whatever is set in the config file.
   
   ### Operating System
   
   EKS
   
   ### Versions of Apache Airflow Providers
   
   _No response_
   
   ### Deployment
   
   Other 3rd-party Helm chart
   
   ### Deployment details
   
   _No response_
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit PR?
   
   - [X] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [airflow] potiuk commented on issue #22298: pod_override ignores namespace configuration

Posted by GitBox <gi...@apache.org>.
potiuk commented on issue #22298:
URL: https://github.com/apache/airflow/issues/22298#issuecomment-1074219302


   assigned you if you want to fix it @johngtam 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [airflow] boring-cyborg[bot] commented on issue #22298: pod_override ignores namespace configuration

Posted by GitBox <gi...@apache.org>.
boring-cyborg[bot] commented on issue #22298:
URL: https://github.com/apache/airflow/issues/22298#issuecomment-1068618813


   Thanks for opening your first issue here! Be sure to follow the issue template!
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org