Deploying to Specific NodesΒΆ
You can run Robusta on specific nodes in your cluster. For example, on a hybrid Windows and Linux cluster, you'll want to ensure Robusta runs on Linux nodes.
You can configure this using either nodeSelectors
, affinities
or taints
and tolerations
Running Robusta on Linux NodesΒΆ
Add the following to your Helm values:
runner:
nodeSelector:
kubernetes.io/os: linux
kubewatch:
nodeSelector:
kubernetes.io/os: linux
# if using Robusta's embedded kube-prometheus-stack, you can configure the Prometheus Operator's components to run on a specific node too
kube-prometheus-stack:
alertmanager:
alertmanagerSpec:
nodeSelector: kubernetes.io/os: linux
prometheus:
prometheusSpec:
nodeSelector: kubernetes.io/os: linux
prometheusOperator:
nodeSelector: kubernetes.io/os: linux
admissionWebhooks:
deployment:
nodeSelector: kubernetes.io/os: linux
patch:
nodeSelector: kubernetes.io/os: linux
kube-state-metrics:
nodeSelector: kubernetes.io/os: linux
grafana:
nodeSelector: kubernetes.io/os: linux
thanosRuler:
thanosRulerSpec:
nodeSelector: kubernetes.io/os: linux
Alternatively, you can configure this with nodeAffinities:
runner:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
kubewatch:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/os
operator: In
values:
- linux
# if using Robusta's embedded kube-prometheus-stack, you can configure the Prometheus Operator's components with nodeAffinities too
kube-prometheus-stack:
alertmanager:
alertmanagerSpec:
affinity:
nodeAffinity: ... # copy from above
prometheus:
prometheusSpec:
affinity:
nodeAffinity: ... # copy from above
prometheusOperator:
affinity:
nodeAffinity: ... # copy from above
admissionWebhooks:
deployment:
affinity:
nodeAffinity: ... # copy from above
patch:
affinity:
nodeAffinity: ... # copy from above
kube-state-metrics:
affinity:
nodeAffinity: ... # copy from above
grafana:
affinity:
nodeAffinity: ... # copy from above
thanosRuler:
thanosRulerSpec:
affinity:
nodeAffinity: ... # copy from above
Running Robusta on Nodes with TaintsΒΆ
To run all the Robusta components on nodes with taints you must add tolerations to each one of them. This includes the Kube Prometheus Stack components if you have enablePrometheusStack: true
in your Helm values file.
Add the following to your Helm values:
globalConfig:
popeye_job_spec:
tolerations: ... # Your Toleration
- key: "appname"
operator: "Equal"
value: "robusta"
effect: "NoSchedule"
krr_job_spec:
tolerations:
- key: "appname"
operator: "Equal"
value: "robusta"
effect: "NoSchedule"
holmes:
tolerations: ... # copy from above
runner:
tolerations: ... # copy from above
kubewatch:
tolerations: ... # copy from above
kube-prometheus-stack:
prometheus:
prometheusSpec:
tolerations: ... # copy from above
alertmanager:
alertmanagerSpec:
tolerations: ... # copy from above
prometheusOperator:
tolerations: ... # copy from above
admissionWebhooks:
deployment:
tolerations: ... # copy from above
patch:
tolerations: ... # copy from above
kube-state-metrics:
tolerations: ... # copy from above
grafana:
tolerations: ... # copy from above
thanosRuler:
thanosRulerSpec:
tolerations: ... # copy from above
General TipsΒΆ
To see your node labels, run kubectl get nodes --show-labels