Skip to content

Passing additional configuration objects

kOps supports passing additional objects to the cluster, and recognizes certain "well known" objects.

Objects that are not well-known will be applied directly to the cluster's k8s api.

Adding objects to a cluster

To add an additional object to an existing cluster, use kops create -f:

kops create -f scheduler-config.yaml
kops update cluster --name=my.cluster.k8s.local --yes --admin
kops rolling-update cluster --name=my.cluster.k8s.local --yes

When creating a new cluster, you can use the --add flag (requires the ClusterAddons feature flag):

export KOPS_FEATURE_FLAGS=ClusterAddons
kops create cluster --name=my.cluster.k8s.local --zones us-east-2a --add scheduler-config.yaml
kops update cluster --name=my.cluster.k8s.local --yes --admin

To view the current additional objects for a cluster:

kops get all -o yaml

Well-Known Objects

Well-known objects receive special handling from kOps instead of being applied directly to the cluster.

KubeSchedulerConfiguration (group: kubescheduler.config.k8s.io)

KubeSchedulerConfiguration objects allow for custom configuration of kube-scheduler, the component responsible for assigning Pods to Nodes.

Fields set in spec.kubeScheduler (see cluster_spec.md) are merged on top of the KubeSchedulerConfiguration object. This allows you to use KubeSchedulerConfiguration for advanced settings like scheduler profiles and plugins, while using spec.kubeScheduler for simpler fields.

Note: the clientConnection.kubeconfig field is managed by kOps and must not be set manually.

Example KubeSchedulerConfiguration file:

# scheduler-config.yaml
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: default-scheduler
    plugins:
      score:
        disabled:
          - name: NodeResourcesBalancedAllocation

Example usage with an existing cluster:

kops create -f scheduler-config.yaml
kops update cluster --name=my.cluster.k8s.local --yes --admin
kops rolling-update cluster --name=my.cluster.k8s.local --yes

Other Kubernetes Objects

Any Kubernetes object that is not a well-known type (such as ConfigMaps, Deployments, DaemonSets, Services, RBAC resources, etc.) will be applied directly to the cluster as a standard Kubernetes resource during kops update cluster.