Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

k8s middle-manager extension for spawning peon pods [WIP] #105

Draft
wants to merge 19 commits into
base: 0.22.1-confluent
Choose a base branch
from

Conversation

kishan-tr
Copy link

@kishan-tr kishan-tr commented Jul 28, 2022

Description

This PR contains implementation of a druid extension (apache#10910) that spawns peon processes from middle managers, as kubernetes pods.

Use-cases :

  • This extension can help us assign less resources to middle managers as peon processes would directly be spawned in kubernetes pods.
  • The first main use-case of this extension could be for compaction tasks as we use middle managers to run compaction tasks. One thing that the extension doesn't have is how do we control where the pods are spawned i.e on which nodes are they created. This PR contains a small customization that can help users to define a pod specification for compaction tasks and let them control the constraints for creating pods on specific nodes
  • The second use case of this extension can be integrating it with the dynamic task allocation feature of druid (Dynamic auto scale Kafka-Stream ingest tasks apache/druid#10524) which can help us in handling ingestion lag by automating the entire scaling process. However, this use-case might require additional research as the extension is designed for middle managers and we are not using middle managers for handling ingestion tasks.

References


Key changed/added classes in this PR
  • K8sForkingTaskRunner.java
  • DefaultK8sApiClient.java
  • CliMiddleManager.java
  • CliPeon.java

This PR has:

  • been self-reviewed.
  • added documentation for new or modified features or behaviors.
  • added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
  • added or updated version, license, or notice information in licenses.yaml
  • added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
  • added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
  • added integration tests.
  • been tested in a test Druid cluster.

@kishan-tr kishan-tr requested a review from CodingParsley August 1, 2022 23:36
@kishan-tr kishan-tr marked this pull request as ready for review August 1, 2022 23:37
@kishan-tr kishan-tr requested review from a team as code owners August 1, 2022 23:37
@kishan-tr kishan-tr marked this pull request as draft August 16, 2022 19:23
@xvrl xvrl changed the title [OBSDATA-317] : k8s middle-manager extension for spawning peon pods [WIP] k8s middle-manager extension for spawning peon pods [WIP] Aug 22, 2022
@cla-assistant
Copy link

cla-assistant bot commented Aug 11, 2023

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants