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

How to configure Argo for container runtime containerd? #2685

Closed
emichaf opened this issue Apr 14, 2020 · 4 comments
Closed

How to configure Argo for container runtime containerd? #2685

emichaf opened this issue Apr 14, 2020 · 4 comments

Comments

@emichaf
Copy link

emichaf commented Apr 14, 2020

Argo version : v2.7.1

I'm using K8S clusters with both container runtimes docker and containerd in worker nodes.

In K8S cluster with docker everything works fine, but having problem running the same workflows in K8S with containerd, but it's not working!

tried with configmap config: containerRuntimeExecutor: k8sapi
but it did not help, any more config required (ex MountPath or similar) ?

@alexec
Copy link
Contributor

alexec commented Apr 14, 2020

can you add your logs please?

@emichaf
Copy link
Author

emichaf commented Apr 14, 2020

invalid spec: templates.ciworkflow.steps[0].gerrit-checkout templates.gerrit-checkout.outputs.artifacts.source: k8sapi executor does not support outputs from base image layer. must use emptyDir" namespace=argo-events workflow=ci-build-easy2use-helloworld-via-eiffel-event-kt7t2

##########################
workflow-controller-configmap
config:
containerRuntimeExecutor: k8sapi
artifactRepository:
s3:
bucket: argo-artifacts
endpoint: minio.argo-events:9000
insecure: true
accessKeySecret:
name: minio
key: accesskey
secretKeySecret:
name: minio
key: secretkey

########################
workflow-controller-xxx

time="2020-04-14T18:56:12Z" level=info msg="Alloc=4898 TotalAlloc=3027095 Sys=70848 NumGC=4789 Goroutines=101"
time="2020-04-14T18:59:10Z" level=info msg="Processing workflow" namespace=argo-events workflow=ci-build-easy2use-helloworld-via-eiffel-event-kt7t2
time="2020-04-14T18:59:10Z" level=info msg="Updated phase -> Running" namespace=argo-events workflow=ci-build-easy2use-helloworld-via-eiffel-event-kt7t2
time="2020-04-14T18:59:10Z" level=info msg="Updated phase Running -> Failed" namespace=argo-events workflow=ci-build-easy2use-helloworld-via-eiffel-event-kt7t2
time="2020-04-14T18:59:10Z" level=info msg="Updated message -> invalid spec: templates.ciworkflow.steps[0].gerrit-checkout templates.gerrit-checkout.outputs.artifacts.source: k8sapi executor does not support outputs from base image layer. must use emptyDir" namespace=argo-events workflow=ci-build-easy2use-helloworld-via-eiffel-event-kt7t2
time="2020-04-14T18:59:10Z" level=info msg="Marking workflow completed" namespace=argo-events workflow=ci-build-easy2use-helloworld-via-eiffel-event-kt7t2
time="2020-04-14T18:59:10Z" level=info msg="Checking daemoned children of " namespace=argo-events workflow=ci-build-easy2use-helloworld-via-eiffel-event-kt7t2
time="2020-04-14T18:59:10Z" level=info msg="Workflow update successful" namespace=argo-events phase=Failed resourceVersion=81143647 workflow=ci-build-easy2use-helloworld-via-eiffel-event

@emichaf
Copy link
Author

emichaf commented Apr 14, 2020

#1256

K8s API

  • secure. cannot escape privileges of pod's service account
  • no extra configuration
  • least scalable - log retrieval and container polling is done against k8s API server
  • can only save params/artifacts in volumes (e.g. emptyDir), and not the base image layer (e.g. /tmp)

Trying pns.

  • secure. cannot escape privileges of service account
  • artifact collection can be collected from base image layer
  • scalable - process polling is done over procfs and not kubelet/k8s API
  • processes will no longer run with pid 1
  • artifact collection from base image may fail for containers which complete too fast
  • cannot capture artifact directories from base image layer which has a volume mounted under it
  • immature

@emichaf
Copy link
Author

emichaf commented Apr 14, 2020

containerRuntimeExecutor: pns was working with container runtime containerd without the need of updating the workflows, so now the workflows are working with both docker & containerd!

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