Kubernetes Driver

Selecting the kubernetes driver adds the following options to the providers section of the configuration.

Type: list

A Kubernetes provider’s resources are partitioned into groups called pools (see providers.[kubernetes].pools for details), and within a pool, the node types which are to be made available are listed (see providers.[kubernetes].pools.labels for details).


For documentation purposes the option names are prefixed providers.[kubernetes] to disambiguate from other drivers, but [kubernetes] is not required in the configuration (e.g. below providers.[kubernetes].pools refers to the pools key in the providers section when the kubernetes driver is selected).


  - name: kubespray
    driver: kubernetes
    context: admin-cluster.local
      - name: main
          - name: kubernetes-namespace
            type: namespace
          - name: pod-fedora
            type: pod
            image: docker.io/fedora:28

Name of the context configured in kube/config.

Before using the driver, Nodepool either needs a kube/config file installed with a cluster admin context, in which case this setting is required, or if Nodepool is running inside Kubernetes, this setting and the kube/config file may be omitted and Nodepool will use a service account loaded from the in-cluster configuration path.

Default: 3

The number of times to retry launching a node before considering the job failed.

Type: list

A pool defines a group of resources from a Kubernetes provider.

providers.[kubernetes].pools.name (required)

Namespaces are prefixed with the pool’s name.

Type: dict

A dictionary of key-value pairs that will be stored with the node data in ZooKeeper. The keys and values can be any arbitrary string.

Type: list

Each entry in a pool`s labels section indicates that the corresponding label is available for use in this pool.

Each entry is a dictionary with the following keys

providers.[kubernetes].pools.labels.name (required)

Identifier for this label; references an entry in the labels section.


The Kubernetes provider supports two types of labels:


Namespace labels provide an empty namespace configured with a service account that can create pods, services, configmaps, etc.


Pod labels provide a dedicated namespace with a single pod created using the providers.[kubernetes].pools.labels.image parameter and it is configured with a service account that can exec and get the logs of the pod.


Only used by the pod label type; specifies the image name used by the pod.

Default: auto
Type: str

The path of the default python interpreter. Used by Zuul to set ansible_python_interpreter. The special value auto will direct Zuul to use inbuilt Ansible logic to select the interpreter on Ansible >=2.8, and default to /usr/bin/python2 for earlier versions.

Type: int

Only used by the pod label type; specifies the number of cpu to request for the pod.

Type: int

Only used by the pod label type; specifies the amount of memory in MB to request for the pod.

Default: []
Type: list

Only used by the pod label type; A list of environment variables to pass to the Pod.

providers.[kubernetes].pools.labels.env.name (required)
Type: str

The name of the environment variable passed to the Pod.

providers.[kubernetes].pools.labels.env.value (required)
Type: str

The value of the environment variable passed to the Pod.

Type: dict

Only used by the pod label type; A map of key-value pairs to ensure the Kubernetes scheduler places the Pod on a node with specific node labels.