Search code examples
kubernetesrouteskubernetes-podaffinity

Is traffic routed to POD on same NODE if POD affinity is used?


I have two PODS, Server POD, and Client POD. My deployment uses replicas more than one. And using the POD affinity I made to co-locate pair of Client and Server nodes on the same node.

My question is whether the traffic from Client is routed to Server POD on the same node? If not, how to configure to achieve the same node routing?

Thanks


Solution

  • Pod affinity ensures colocated pods are deployed onto same node. It does not guarantee traffic will be sent to pods on the same node.

    You need to use service topology. Kubernetes version 1.17 or later is needed for this feature and you need to enable this feature via feature flag.

    Service Topology enables a service to route traffic based upon the Node topology of the cluster. For example, a service can specify that traffic be preferentially routed to endpoints that are on the same Node as the client, or in the same availability zone

    Consider a cluster with Nodes that are labeled with their hostname, zone name, and region name. Then you can set the topologyKeys values of a service to direct traffic as follows.

    1. Only to endpoints on the same node, failing if no endpoint exists on the node: ["kubernetes.io/hostname"].

    2. Preferentially to endpoints on the same node, falling back to endpoints in the same zone, followed by the same region, and failing otherwise: ["kubernetes.io/hostname", "topology.kubernetes.io/zone", "topology.kubernetes.io/region"]. This may be useful, for example, in cases where data locality is critical.

    3. Preferentially to the same zone, but fallback on any available endpoint if none are available within this zone: ["topology.kubernetes.io/zone", "*"].