-
Notifications
You must be signed in to change notification settings - Fork 40k
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
rocket support #5518
rocket support #5518
Conversation
Rename SyncPods to SyncDockerPods. Rename syncPod to syncDockerPods. Rename SyncRocketPods to SyncPods. Rename syncRocketPod to syncPod.
@dchen1107 to review/reassign |
Happy to help @dchen1107 :) |
@yifan-gu Thanks for the PR. Haven't read PR in detail yet, and here are my initial comments by reading through changes under pkg/kublet:
|
@dchen1107 Thanks for the comments! I definitely agree with you! I think we are on the same page that the final goal should move the docker runtime out of the kubelet's code. But that's not easy giving that we are doing optimization around the infra/network container stuff in the kubelet's sync logic, and we are tightly coupled with docker's data types in the kubelet. So this PR is a short term solution to make k8s run rocket without breaking the docker piece. I am now trying to make the rocket's container runtime implementation and the new syncloop path more complete, and by the mean time, I am trying to figure out how to refactor the docker code to make it convergent to the runtime interface. |
ACK on your last comment. I am ok with refactoring later. I also filed #5526 to eliminate those coupling from kubelet which makes implementing runtime plugins easier. To make the review go smoother and faster, could you please break this PR into several smaller ones? |
@dchen1107 |
@dchen1107 @vmarmol After splitting this all out and getting incremental changes together the idea is to get this merged into master, right? We already agree that adding this abstraction for multiple runtimes is good, right? |
@philips yes, we're all on-board getting this in :) Sorry for the delay, large PRs are scary, the smaller ones should be faster to review. |
@philips Yes, this is the plan. Also @yifan-gu started to send out smaller pr #5572 based on this one. Meanwhile, there is a kubelet internal architecture issue. Ideally, I want this be introduced an another runtime plugin. The problem is that kubelet currently tightly coupled with docker runtime. see #5526 for detail, which requires a deep cleanup first, then introduce a framework for this. I definitely don't want those internal refactor and cleanup block this feature; but on another hand, I also want to make sure there is a way to get there without paying larger debt later. |
@dchen1107 Absolutely, I want to make sure we get this in in the right way. I was just checking that everyone agrees that we are in fact trying to get it in with these PRs. |
@philips We do want this in. We're somewhat bottlenecked on review bandwidth right now, but #5572 was reviewed and appears to be close to being merged. Please ping me by direct email if you have any concerns -- replying through github may get lost in the noise. @dchen1107 @vmarmol @yifan-gu Consider arranging a Hangout if you're not converging in the PR discussion. |
@bgrant0607 Thank you! Cleaning up the kubelet definitely needs some time (I am willing to help). Just need to make sure that temporal second code path for rocket is OK, right? @dchen1107 @vmarmol |
I think that this is obsoleted by #5877? If so, I'd like to close this PR. |
@brendanburns OK. Let me close |
OVERVIEW
CURRENT STATE
TODO
Exec in container, via
nsenter
directly, we have code in k8s doing this, seems to only need minor changes.Or we can use
rkt enter
.Edit:
Added rocket's implementation for
RunInContainer
. But need to wait for refactoringContainerCommandRunner
interface.Since we use systemd to supervise container process, we can bake the restart policy in the unit file (which simplifies the sync pod logic). Unfortunately this solution is not generic for other container runtimes like
docker
or other future runtimes.Implement the image puller/throttled image puller interface for Rocket. Also need to add command line options to allow Rocket to trust image sources.
This needs support from Rocket: networking: expose ports to the host rkt/rkt#624
Get log for each container in the pod.
docker run
Options:Such as capability add/drop (which is approachable now).
Get more runtime information about the container, like the creation time, the exit code, etc. I think most of them can be done via systemd.
TBD.
ISSUE
VolumeMounts
([{Name, Readonly, MountPath}, ...]) in a kubernetes container should also appear in ACI, otherwise we cannot mount the volumes to the path in the rkt container.NEXT PLAN
Thank you!