This references the api spec and the high level description.
It should be noted that the high-level description is somewhat out of date. There are now only two services: RuntimeService
and ImageService
- How are PodSandboxes mutated?
- Why does CreateContainerRequest also allow a PodSandboxConfig? Is this the preferred way to mutate a PodSandbox? What about cases where the sandbox is mutated outside of container creation?
- What fields in a PodSandboxConfig can be used to mutate a running PodSandbox?
- The PodSandboxStatus is missing some data:
- No way to get the list of port forwards
- No way to get the log_directory
- The ContainerStatus is missing some data:
- Missing log_path
- Why do List(PodSandbox|Containers) return different types from (PodSandbox|Container)Status?
- Are there uniqueness contstraints on mount names? Are they per-Container or per-PodSandbox?
FYI, there is a plan we switch to proto3, which all fields are optional. So when the proto was defined, we intend to make them optional.
Not 100% sure if we added PodSandboxConfig in the CreateContainerRequest because we want to mutate it, IIRC it's just because we need to know the value of it (then why not just passing pod sandbox ID?) cc @yujuhong @feiskyer for better answers to this.
ContainerStatus contains more detailed information like creation time, start time, exit code, etc. Basically container maps the the return value of
docker ps
, container status maps todocker inspect
. I do think we are able to merge two of these, but it's not a blocking issue IMO.At least name, container_path, host_path will always be there.
Today kubelet don't guarantee the names to be unique even per container. And in today's rktnetes we totally ignore the names, instead we create a uuid for each mount to make them unique.
Probably we can get rid of the mount name, they are not visible to users anywhere.
I don't know for sure, maybe CNI can handle it? How about the vm case? cc @euank @steveej
What internal rkt data structure are you referencing?