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

Jupyter resource should indicate when notebook is running #2723

Closed
jlewi opened this issue Mar 16, 2019 · 12 comments
Closed

Jupyter resource should indicate when notebook is running #2723

jlewi opened this issue Mar 16, 2019 · 12 comments
Assignees
Labels
area/jupyter Issues related to Jupyter priority/p1
Projects

Comments

@jlewi
Copy link
Contributor

jlewi commented Mar 16, 2019

We want the jupyter web app to report when the notebook is ready so the user knows when to try to connect to it (#2588).

#2558 modified the jupyter notebook resource to add a condition "READY"

But the READY condition doesn't take into account whether the container is actually created and running.

We should update the conditions to indicate when the jupyter container is actually running.

We need this for #2417 so that we can surface to users when the notebook is ready to connect to.

Related to: #2417

@jlewi jlewi added priority/p1 area/jupyter Issues related to Jupyter labels Mar 16, 2019
@jlewi jlewi added this to New in 0.5.0 via automation Mar 16, 2019
@jlewi
Copy link
Contributor Author

jlewi commented Mar 16, 2019

/cc @zabbasi

@jlewi jlewi moved this from New to Replace JupyterHub in 0.5.0 Mar 17, 2019
@vkoukis
Copy link
Member

vkoukis commented Mar 19, 2019

Two questions here, after the discussion in today's community meeting:

  1. @jlewi Ca we make this part of 0.5., so that in combination with jupyter web app should provide status of notebook #2588 we have full e2e status reporting for notebooks? This way we will show significant UX improvements in 0.5, compared to 0.4.

  2. If I understand correctly, the plan in this issue is to expose the full pod status as part of the status field of the Notebook instance in the K8s API, right? At the API level, I as a user know that the Notebook instance is backed by a StatefulSet -> pod, so I think we should surface as much information as we can, e.g., ContainerCreating, Running, etc. And then, the UI can translate all the low-level information into something user-friendly, as part of jupyter web app should provide status of notebook #2588.

@vkoukis
Copy link
Member

vkoukis commented Mar 19, 2019

I think I should also /cc @lluunn here

@lluunn lluunn mentioned this issue Mar 19, 2019
22 tasks
@lluunn
Copy link
Contributor

lluunn commented Mar 19, 2019

@vkoukis
I think StatefulSet or Deployment only surfaces things like number of replicas that's ready.
Is that enough?

If we want to show the more low level detail, is it possible that the UI go query the pod directly (use labels)?

@zabbasi
Copy link
Contributor

zabbasi commented Mar 19, 2019

@vkoukis following @lluunn comment I'm working to surface ReadyReplicas.

@vkoukis
Copy link
Member

vkoukis commented Mar 20, 2019

@lluunn
Hello Lun-kai,

I think StatefulSet or Deployment only surfaces things like number of replicas that's ready.
Is that enough?
The controller currently runs a StatefulSet for a single replica. So if you implement just reporting of ready replicas, then we will essentially have a binary field: Either the Notebook is ready, or it's not. There is no way to expose to the user that the Notebook is being created, or that something has gone wrong.

For example, we have seen that one of the biggest user gripes -- right now -- is that once they create a notebook, they don't have any feedback on its progress. Think how great it will be if the UI can translate ImagePullBackOff or ErrImagePull or similar states into a yellow triangle / "Warning" state, and expose the fact that Kubeflow is trying to create the Notebook server again and again.

Surfacing ReadyReplicas would be an improvement, but I think the UX would absolutely rock if we can surface the state of each individual pod of the StatefulSet [well, there is only a single pod, so...]

If we want to show the more low level detail, is it possible that the UI go query the pod directly (use labels)?

I argue against this:

So far, the UI only know about Notebook instances. It submits Notebook instances, and queries them. It would be very strange to actually start using labels to query the underlying pods. It doesn't even know [and shouldn't know] that there is a StatefulSet underneath. The Controller knows that it creates a StatefulSet per notebook. It also knows that it sets its replicas to 1. So, I think it's best for the controller to surface per-pod information, as part of the Notebook's status.

Also, a lesser argument would be that the UI may only have access to Notebook objects in the K8s API, and it would be good from a security perspective to keep its rights as limited as possible, so querying other objects may be out of reach.

What do you think?

@jlewi
Copy link
Contributor Author

jlewi commented Mar 23, 2019

@vkoukis What's the latest on this?

@lluunn
Copy link
Contributor

lluunn commented Mar 25, 2019

@zabbasi 's #2743 added ReadyReplica to notebook status,
I am working on #2787 to relay container status to notebook.

@vkoukis
Copy link
Member

vkoukis commented Mar 26, 2019

@jlewi I'm watching #2787, looks great! Once this is merged [I'm seeing you're retesting it right now], we'll submit a PR for #2588 and close it before the end of the week.

@vkoukis
Copy link
Member

vkoukis commented Mar 26, 2019

/cc @kimwnasptd

@vkoukis
Copy link
Member

vkoukis commented Mar 26, 2019

/assign @kimwnasptd

@lluunn
Copy link
Contributor

lluunn commented Mar 27, 2019

fixed bu #2787

@lluunn lluunn closed this as completed Mar 27, 2019
0.5.0 automation moved this from Replace JupyterHub to Done Mar 27, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/jupyter Issues related to Jupyter priority/p1
Projects
No open projects
0.5.0
  
Done
Development

No branches or pull requests

5 participants