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

argo executor resource quota are missing for default container (e.g. init, wait) #2790

Closed
6 of 7 tasks
hsinhoyeh opened this issue Jul 7, 2024 · 2 comments
Closed
6 of 7 tasks

Comments

@hsinhoyeh
Copy link

Validation Checklist

Version

1.8

Describe your issue

our k8s cluster has setup resource quota per namespace, i.e. each running pods in that namespace should be specify resource.requests / resource.limits.

when our newly installed kubeflow 1.8 (and we checked the code, version after 1.8 have similar issue),
running the following example raised failed quota errors.

from kfp import dsl
from kfp import compiler

import os
# In tests, we install a KFP package from the PR under test. Users should not
# normally need to specify `kfp_package_path` in their component definitions.
_KFP_PACKAGE_PATH = os.getenv('KFP_PACKAGE_PATH')


@dsl.component(kfp_package_path=_KFP_PACKAGE_PATH)
def hello_world(text: str) -> str:
    print(text)
    return text


@dsl.pipeline(name='hello-world', description='A simple intro pipeline')
def pipeline_hello_world(text: str = 'hi there'):
    """Pipeline that passes small pipeline parameter string to consumer op."""

    consume_task = hello_world(
        text=text).set_cpu_request('1').set_memory_request('650M').set_cpu_limit('1').set_memory_limit('1G')  # Passing pipeline parameter as argument to consumer op


if __name__ == "__main__":
    # execute only if run as a script
    compiler.Compiler().compile(
        pipeline_func=pipeline_hello_world,
        package_path='hello_world_pipeline.json')

with the following error message:

task 'hello-world-w8rxr.root-driver' errored: pods "hello-world-w8rxr-1768006001" is forbidden: failed quota: kf-resource-quota: must specify cpu for: init,wait

the message suggests that default argo container (init/wait) requires resources quota too.
The above error message is gone when we patch the configmap of argo with:

executor: |
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        cpu: 0.01
        memory: 32Mi
      limits:
        cpu: 0.5
        memory: 512Mi

We also noted that this resources was added before v1.7.0 (including v1.6 and v1.5) but was removed since this Pr #2511 https://github.com/kubeflow/manifests/pull/2511/files#diff-2fb7c70cac207a370318e3f23a14eec22bec6fba5ec87916cb5d1a2e2d8585deL42

seems like these resources are removed accidentally?
if so I would like to contribute it~

Steps to reproduce the issue

  1. install kubeflow v1.8 (or v1.9)
  2. run the above hello world example with resource quota
  3. check workflow resources to see errors kubectl -n <namespace> describe workflow <workflow-name>

Put here any screenshots or videos (optional)

No response

@juliusvonkohout
Copy link
Member

" Are you posting in the right repository ?" Sadly no, this belongs to Kubeflow/pipelines. We synchronize the manifests from there.

Please reopen there and close here.

@hsinhoyeh
Copy link
Author

" Are you posting in the right repository ?" Sadly no, this belongs to Kubeflow/pipelines. We synchronize the manifests from there.

Please reopen there and close here.

@juliusvonkohout thanks, it is related to kubeflow/pipelines#9089 and There are some directions on specifying resource limits in LimitRange or in the profile itself. closed 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

No branches or pull requests

2 participants