Skip to content

investigation: traffic distribution in kcp-front-proxy to shard replica connections #3504

Open

Description

@embik

We have had a report of traffic unbalance between front-proxy and kcp shard replicas. While we have no details at the time, it makes sense to investigate this some more.

Current Situation

The typical deployment of kcp-front-proxy with multiple replicas for the same shard is the Helm chart. For the Helm chart, we've configured front-proxy routing to go to the Service DNS name for the kcp root shard. This means that front-proxy doesn't know about individual shard replicas and sends traffic to the virtual cluster IP for the service.

Given that front-proxy basically doesn't do load balancing here but offloads it to the Service, this might not be ideal for a component that is primarily concerned with being the "front door" of a (global) kcp setup. Basically, front-proxy does load balancing by shard, but not by shard replica.

There's some reason to believe that the type of incoming connections make it hard for Kubernetes' service load balancing to do a good job. One of them problems are likely watch calls, which are kept open and therefore long living connections.

Investigation

The person picking up this ticket should investigate, see if we can get meaningful traffic metrics out of the shard replicas, and think about what could be changed to improve the situation. One of the suggestions from the community call was to look into the Kubernetes aggregation layer's handling of proxying requests, since it appears to resolve DNS to individual endpoints and distributes load itself. Maybe we can re-use that logic.

Activity

  1. added this to the TBD milestone on Aug 4, 2025
  2. kcp-ci-bot commented on Nov 2, 2025

    @kcp-ci-bot
    Contributor

    Issues go stale after 90d of inactivity.
    After a furter 30 days, they will turn rotten.
    Mark the issue as fresh with /remove-lifecycle stale.

    If this issue is safe to close now please do so with /close.

    /lifecycle stale

  3. added
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.
    on Nov 2, 2025
  4. kcp-ci-bot commented on Dec 2, 2025

    @kcp-ci-bot
    Contributor

    Stale issues rot after 30d of inactivity.
    Mark the issue as fresh with /remove-lifecycle rotten.
    Rotten issues close after an additional 30d of inactivity.

    If this issue is safe to close now please do so with /close.

    /lifecycle rotten

  5. added
    lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.
    and removed
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.
    on Dec 2, 2025
  6. ntnn commented on Dec 2, 2025

    @ntnn
    Member

    /remove-lifecycle rotten

  7. removed
    lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.
    on Dec 2, 2025
  8. kcp-ci-bot commented on Mar 3, 2026

    @kcp-ci-bot
    Contributor

    Issues go stale after 90d of inactivity.
    After a furter 30 days, they will turn rotten.
    Mark the issue as fresh with /remove-lifecycle stale.

    If this issue is safe to close now please do so with /close.

    /lifecycle stale

  9. added
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.
    on Mar 3, 2026
  10. ntnn commented on Mar 3, 2026

    @ntnn
    Member

    /remove-lifecycle stale

  11. removed
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.
    on Mar 3, 2026
  12. kcp-ci-bot commented on Jun 1, 2026

    @kcp-ci-bot
    Contributor

    Issues go stale after 90d of inactivity.
    After a furter 30 days, they will turn rotten.
    Mark the issue as fresh with /remove-lifecycle stale.

    If this issue is safe to close now please do so with /close.

    /lifecycle stale

  13. added
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.
    on Jun 1, 2026
  14. kcp-ci-bot commented on Nov 9, 2026

    @kcp-ci-bot
    Contributor

    Stale issues rot after 30d of inactivity.
    Mark the issue as fresh with /remove-lifecycle rotten.
    Rotten issues close after an additional 30d of inactivity.

    If this issue is safe to close now please do so with /close.

    /lifecycle rotten

  15. added
    lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.
    and removed
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale.
    on Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    • Status
      New

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions