Networkaware

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.