intelligent-machine-learning / intelligent-machine-learning/dlrover

Enhance/Replace k8s python client.

Open
#1,291 2 comments 0 reactions 1 assignee View on GitHub

@Mukku27 is already working on this.

Since Nov 5, 2024.

Hacktoberfest wip
Dominant language
Python
Stars
1.7k
Forks
219
Avg merge
10h 11m
Merged PRs (30d)
11

Description

Background

Currently, DLRover uses the official Kubernetes Python client to interact with the Kubernetes API Server. This part of implementations are quite important because it involves managing the lifecycle of training workers. However, the Python client has inherent limitations and lags behind the Go (and Java) clients (e.g., lacks an informer implementation), leading to occasional unexpected usage issues in certain scenarios. Therefore, we intend to:

[Option 1] Replace the current Python client with the Go client(need to use CFFI).
[Option 2] Enhance k8s client implements in python.

Requirement

The enhancement/replacement should ensure compatibility with all existing Kubernetes-related calls while also adapting the usage in dlrover/python/scheduler/kubernetes.py.

  1. Ensure compatibility with all related features (no regression).
  2. Reimplement the watch mechanism using the 'informer'. (dlrover/python/master/watcher/k8s_watcher.py)

For replacement scheme requires evaluation of:

  1. Limitations on different system platforms.
  2. Issues with cross-language object transfer.
  3. Potential performance overhead.
  4. Additional costs for building and deployment.

For enhancement scheme requires evaluation of:

  1. Feasibility and complexity of implementation.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.