﻿# BRIX On-Premises advanced settings

> [HTML Version](advanced-kubernetes-settings.html)

Advanced application settings in a Kubernetes cluster are tools for distributing workload across nodes. You can use them to control where and how containers run, as well as customize how they interact with nodes and other replicas. With these settings, you can improve system resiliency, limit the impact of failures, and protect critical components.

## Pod placement settings

To distribute pods across nodes, you can use the tools:

- [topologySpreadConstraints parameter](pod-topology-spread-constraints.md) to distribute pods evenly across the cluster topology.

- [nodeSelector parameter](node-selector.md) to place pods on specific nodes.

- [Taints and tolerations tools](taints-tolerations.md) to allocate nodes for critical services and prohibit other load on these nodes.

- [Affinity and Anti-affinity tools](affinity-antiaffinity.md) to configure flexible load balancing rules on nodes.

## Pod management settings

You can also apply the parameters:

- [securityContext and podSecurityContext](security-context.md) to specify security settings for containers and pods.

- [podDisruptionBudget](pod-disruption-budget.md) to specify the number of pods unavailable during scheduled maintenance, for example, during upgrades or migrations.

## Recommendations for configuring pod placement

1. For optimal configuration, use the pod placement settings consistently and test the result of their execution. 

2. Do not set too strict rules. This can lead to conflicts between tools.

3. Avoid excessive restrictions when you set rules for taints and tolerations and use them together with the \[OBJECT\] parameter. Otherwise, no suitable nodes will be found for pods.

4. Watch for strictness when combining the \[OBJECT\] rule in Affinity with the taints or \[OBJECT\] parameter. In case of conflicting conditions, the placement of pods on all nodes may be blocked.

5. Do not allow inconsistent conditions to be set when configuring Affinity and the \[OBJECT\] parameter. For example, pods cannot be started when Affinity rules require grouping pods on one node and the \[OBJECT\] parameter requires distribution on different nodes.