Overview #
This folder holds the NetworkAware plugins implemented as discussed in the KEP - Network-Aware framework.
Maturity Level #
- 💡 Sample (for demonstrating and inspiring purpose)
- 👶 Alpha (used in companies for pilot projects)
- 👦 Beta (used in companies and developed actively)
- 👨 Stable (used in companies for production workloads)
TopologicalSort Plugin (QueueSort) #
The TopologicalSort
QueueSort plugin orders pods to be scheduled in an
AppGroup based on their
microservice dependencies related to
TopologicalSort.
Further details and examples are described here.
NetworkOverhead Plugin (Filter & Score) #
The NetworkOverhead
Filter & Score plugin filters out nodes based on microservice dependencies
defined in an AppGroup and scores nodes with lower network costs (described in a
NetworkTopology)
higher to achieve latency-aware scheduling.
Further details and examples are described here.
Scheduler Config example #
Consider the following scheduler config as an example to enable both plugins:
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
leaderElection:
leaderElect: false
clientConnection:
kubeconfig: "/etc/kubernetes/scheduler.conf"
profiles:
- schedulerName: network-aware-scheduler
plugins:
multiPoint:
enabled:
- name: NetworkOverhead
weight: 5 # A higher weight is given to NetworkOverhead to favor allocation schemes with lower latency.
disabled:
- name: NodeResourcesFit # Preferably avoid the combination of NodeResourcesFit with NetworkOverhead
queueSort:
enabled:
- name: TopologicalSort
disabled:
- name: "*"
pluginConfig:
- name: TopologicalSort
args:
namespaces:
- "default"
- name: NetworkOverhead
args:
namespaces:
- "default"
weightsName: "UserDefined" # The respective weights to consider in the plugins
networkTopologyName: "net-topology-test" # networkTopology CR to be used by the plugins
Summary #
Further details about the network-aware framework are available here.