### Apache Airflow version

2.1.3

### Operating System

ContainerOS

### Versions of Apache Airflow Providers

apache-airflow-providers-amazon==2.1.0
apache-airflow-providers-celery==2.0.0
apache-airflow-providers-cncf-kubernetes==2.0.2
apache-airflow-providers-databricks==2.0.1
apache-airflow-providers-docker==2.1.0
apache-airflow-providers-elasticsearch==2.0.2
apache-airflow-providers-ftp==2.0.0
apache-airflow-providers-google==5.0.0
apache-airflow-providers-grpc==2.0.0
apache-airflow-providers-hashicorp==2.0.0
apache-airflow-providers-http==2.0.0
apache-airflow-providers-imap==2.0.0
apache-airflow-providers-microsoft-azure==3.1.0
apache-airflow-providers-mysql==2.1.0
apache-airflow-providers-papermill==2.0.1
apache-airflow-providers-postgres==2.0.0
apache-airflow-providers-redis==2.0.0
apache-airflow-providers-sendgrid==2.0.0
apache-airflow-providers-sftp==2.1.0
apache-airflow-providers-slack==4.0.0
apache-airflow-providers-sqlite==2.0.0
apache-airflow-providers-ssh==2.1.0

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

Official Helm Chart on GKE using CeleryKubernetesExecutor.

### What happened

I'm unable to Run Tasks from the UI when using CeleryKubernetesExecutor. It just shows the error "Only works with the Celery or Kubernetes executors, sorry". 
<img width="1792" alt="Captura de Pantalla 2021-09-22 a la(s) 17 00 30" src="https://user-images.githubusercontent.com/2586758/134413668-5b638941-bb50-44ff-9349-d53326d1f489.png">




### What you expected to happen

It should be able to run Tasks from the UI when using CeleryKubernetesExecutor, as it only is a "selective superset" (based on queue) of both the Celery and Kubernetes executors.

### How to reproduce

1. Run an Airflow instance with the CeleryKubernetes executor.
2. Go to any DAG
3. Select a Task
4. Press the "Run" button.
5. Check the error.

### Anything else

I will append an example PR as a comment.

### 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)

airflow/www/views.py
for source_id in task_group.upstream_task_ids:
            edges_to_add.add((source_id, task_group.upstream_join_id))
            for child in task_group.get_roots():
                edges_to_add.add((task_group.upstream_join_id, child.task_id))
                edges_to_skip.add((source_id, child.task_id))
        for child in task_group.children.values():
            collect_edges(child)
    collect_edges(dag.task_group)
    
    edges = set()
    def get_downstream(task):
        for child in task.downstream_list:
            edge = (task.task_id, child.task_id)
            if edge not in edges:
                edges.add(edge)
                get_downstream(child)
    for root in dag.roots:
        get_downstream(root)
    result = []
    
    
    for source_id, target_id in sorted(edges.union(edges_to_add) - edges_to_skip):
        record = {"source_id": source_id, "target_id": target_id}
        label = dag.get_edge_info(source_id, target_id).get("label")
        if label:
            record["label"] = label
        result.append(record)
    return result
def not_found(error):