**Apache Airflow version**: 2.0.0a1
**Kubernetes version (if you are using kubernetes)** (use `kubectl version`): No kubernetes used.

**Environment**:

- **OS** (e.g. from /etc/os-release): MacOS

**What happened**:

After updating my local dev environment configuration for Airflow 2.0.0a1 I wanted to see if the database needed updating:

```
$ airflow db check
Traceback (most recent call last):
  File "/.../bin/airflow", line 8, in <module>
    sys.exit(main())
  File "/.../lib/python3.6/site-packages/airflow/__main__.py", line 40, in main
    args.func(args)
  File "/.../lib/python3.6/site-packages/airflow/cli/cli_parser.py", line 52, in command
    func = import_string(import_path)
  File "/.../lib/python3.6/site-packages/airflow/utils/module_loading.py", line 32, in import_string
    module = import_module(module_path)
  File "/.../lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/.../lib/python3.6/site-packages/airflow/cli/commands/db_command.py", line 24, in <module>
    from airflow.utils import cli as cli_utils, db
  File "/.../lib/python3.6/site-packages/airflow/utils/db.py", line 26, in <module>
    from airflow.jobs.base_job import BaseJob  # noqa: F401 # pylint: disable=unused-import
  File "/.../lib/python3.6/site-packages/airflow/jobs/__init__.py", line 22, in <module>
    import airflow.jobs.scheduler_job  # noqa
  File "/.../lib/python3.6/site-packages/airflow/jobs/scheduler_job.py", line 50, in <module>
    from airflow.models.serialized_dag import SerializedDagModel
  File "/.../lib/python3.6/site-packages/airflow/models/serialized_dag.py", line 35, in <module>
    from airflow.serialization.serialized_objects import SerializedDAG
  File "/.../lib/python3.6/site-packages/airflow/serialization/serialized_objects.py", line 37, in <module>
    from airflow.kubernetes.pod_generator import PodGenerator
  File "/.../lib/python3.6/site-packages/airflow/kubernetes/pod_generator.py", line 35, in <module>
    from kubernetes.client import models as k8s
ModuleNotFoundError: No module named 'kubernetes'
```

**What you expected to happen**:

`kubernetes` is an optional extra dependency, if it is not installed things should not break.

**How to reproduce it**:

This happens in a new setup, the following steps reproduce the issue:

```python
$ virtualenv -p python3.8 testenv
$ source testenv/bin/activate
$ pip install --find-links https://dist.apache.org/repos/dist/dev/airflow/2.0.0a1/ apache-airflow==2.0.0a1
$ airflow db check
```

tests/serialization/test_dag_serialization.py
),
        (
            ClassWithCustomAttributes(nested1=ClassWithCustomAttributes(att1="{{ task.task_id }}",
                                                                        att2="{{ task.task_id }}",
                                                                        template_fields=["att1"]),
                                      nested2=ClassWithCustomAttributes(att3="{{ task.task_id }}",
                                                                        att4="{{ task.task_id }}",
                                                                        template_fields=["att3"]),
                                      template_fields=["nested1"]),
            "ClassWithCustomAttributes("
            "{'nested1': ClassWithCustomAttributes({'att1': '{{ task.task_id }}', "
            "'att2': '{{ task.task_id }}', 'template_fields': ['att1']}), "
            "'nested2': ClassWithCustomAttributes({'att3': '{{ task.task_id }}', "
            "'att4': '{{ task.task_id }}', 'template_fields': ['att3']}), 'template_fields': ['nested1']})",
        ),
    ])
    def test_templated_fields_exist_in_serialized_dag(self, templated_field, expected_field):
        """
        Test that templated_fields exists for all Operators in Serialized DAG
        Since we don't want to inflate arbitrary python objects (it poses a RCE/security risk etc.)
        we want check that non-"basic" objects are turned in to strings after deserializing.
        """
        dag = DAG("test_serialized_template_fields", start_date=datetime(2019, 8, 1))
        with dag:
            BashOperator(task_id="test", bash_command=templated_field)
        serialized_dag = SerializedDAG.to_dict(dag)
        deserialized_dag = SerializedDAG.from_dict(serialized_dag)
        deserialized_test_task = deserialized_dag.task_dict["test"]
        self.assertEqual(expected_field, getattr(deserialized_test_task, "bash_command"))
    def test_dag_serialized_fields_with_schema(self):