Skip to content
This repository was archived by the owner on Mar 9, 2022. It is now read-only.

Conversation

@Random-Liu
Copy link
Member

@Random-Liu Random-Liu commented Apr 14, 2017

This PR added initial documents including:

  • CONTRIBUTING.md
  • OWNERS
  • README.md
  • code-of-conduct.md
  • docs/proposal.md

/cc @feiskyer @resouer
@kubernetes-incubator/maintainers-cri-containerd

@feiskyer
Copy link

LGTM

docs/proposal.md Outdated
Containerd was previously part of Docker, [introduced in Docker 1.11](https://blog.docker.com/2016/04/docker-engine-1-11-runc/), used to manage [runC](https://runc.io/) containers on the node. As is shown below, it creates a containerd-shim for each container, and the shim manages the lifecycle of its corresponding container.
![containerd](./containerd.png)

In Dec. 2016, Docker spun it out into a standalone component, and donated it to [CNCF](https://www.cncf.io/) in Mar. 2017.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like we should use Docker Inc. here? It is confusing between Docker & Docker Inc in this part.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

docs/proposal.md Outdated
CRI-containerd should:
* Create a network namespace;
* Call [network plugin](https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/network/plugins.go) to update the options of the network namespace;
* Let the user containers share the network namespace.
Copy link

@resouer resouer Apr 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this saying "user containers in the same Pod"?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needs more explanation..

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

README.md Outdated
@@ -1 +1,22 @@
# cri-containerd No newline at end of file
# cri-containerd
Cri-containerd is a [containerd](https://containerd.io/) based implementation of Kubernetes [container runtime interface (CRI)](https://github.com/kubernetes/kubernetes/blob/v1.6.0/pkg/kubelet/api/v1alpha1/runtime/api.proto).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Is it 'CRI-containerd' here?

Copy link
Member Author

@Random-Liu Random-Liu Apr 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes unless the proper name of the product is CRI-ContainerD or some such..

@Crazykev
Copy link
Contributor

Glad to see this project, please ping me if needs any help here!

CONTRIBUTING.md Outdated

### Adding dependencies

If your patch depends on new packages, add that package with [`godep`](https://github.com/tools/godep). Follow the [instructions to add a dependency](https://github.com/kubernetes/kubernetes/blob/master/docs/devel/development.md#godep-and-dependency-management).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copied the whole doc from other project. Will update. Thanks.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@supereagle
Copy link

Cool. Looking forward to this feature.

Copy link
Member

@mikebrow mikebrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See proposed edits....

docs/proposal.md Outdated
## Background
Containerd is a core container runtime, which provides the minimum set of functionalities to manage the complete container lifecycle of its host system, including container execution and supervision, image distribution and storage, etc.

Containerd was previously part of Docker, [introduced in Docker 1.11](https://blog.docker.com/2016/04/docker-engine-1-11-runc/), used to manage [runC](https://runc.io/) containers on the node. As is shown below, it creates a containerd-shim for each container, and the shim manages the lifecycle of its corresponding container.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/s/was previously/is a part of/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, it's not a part of docker now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right is a dependency.. without it there is no docker.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so maybe was previously part of Docker and will soon become a dependency of future Docker releases.

Copy link
Member Author

@Random-Liu Random-Liu Apr 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because Docker said they were spanning out containerd, so it seems like before they spun out it, it was "part of docker".

Copy link
Member

@mikebrow mikebrow Apr 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right splitting out the component from github.com/docker/docker... yet still including it as a part of docker with respect to the design of docker and running code dependency chain that also includes opencontainers/runc and docker/libcontainer as the major code repositories for the container code.

Copy link
Member Author

@Random-Liu Random-Liu Apr 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The docker concept is confusing - docker opensource org, docker inc, docker itself.

I'll just remove this sentence then. :p

docs/proposal.md Outdated
In Dec. 2016, Docker spun it out into a standalone component, and donated it to [CNCF](https://www.cncf.io/) in Mar. 2017.

## Motivation
Containerd is a potential alternative to Docker as the runtime for Kubernetes cluster. *Compared with Docker*, containerd has pros and cons.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/s/is a/is one/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the difference?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hints that there are other alternatives.. one of many..

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rkt, cri-o, hyperv...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's why I didn't use the. :)

Copy link
Member

@mikebrow mikebrow Apr 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

http://www.differencebetween.com/difference-between-a-and-vs-one-in-english-grammar/

:-) It's tricky. Using a indicates the noun that follows (potential alternative) is singular. Whereas in this case it is plural.. one of many. But this is being picky :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, you are a good English teacher!

## Motivation
Containerd is a potential alternative to Docker as the runtime for Kubernetes cluster. *Compared with Docker*, containerd has pros and cons.
### Pros
* **Stability**: Containerd has limited scope and slower feature velocity, which is expected to be more stable.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While containerd is fairly new, going forward it is expected, by design, to have slower feature velocity due mainly to it's limited scope as compared to Docker.

docs/proposal.md Outdated
Containerd is a potential alternative to Docker as the runtime for Kubernetes cluster. *Compared with Docker*, containerd has pros and cons.
### Pros
* **Stability**: Containerd has limited scope and slower feature velocity, which is expected to be more stable.
* **Compatibility**: The scope of containerd meets Kubernetes' requirement pretty well.
Copy link
Member

@mikebrow mikebrow Apr 14, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/s/meets Kubernetes' requirement pretty well./aligns with Kubernetes' requirements. Further, any missing features and function should be achievable through community involvement with the containerd team./

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

docs/proposal.md Outdated
* **Stability**: Containerd has limited scope and slower feature velocity, which is expected to be more stable.
* **Compatibility**: The scope of containerd meets Kubernetes' requirement pretty well.
* **Performance**:
* Containerd consumes less resource because it's only a subset of Docker;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/s/because it's only a subset of Docker/than Docker at least because it is a subset of Docker/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

docs/proposal.md Outdated
CRI-containerd should:
* Create a network namespace;
* Call [network plugin](https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/network/plugins.go) to update the options of the network namespace;
* Let the user containers share the network namespace.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needs more explanation..

docs/proposal.md Outdated

CRI container metrics api needs to be defined ([#27097](https://github.com/kubernetes/kubernetes/issues/27097)). After that, CRI-containerd should translate containerd container metrics into CRI container metrics.
### Image Management
CRI-containerd relies on containerd to manage image. Containerd should provide all function and information required by CRI, and CRI-containerd only needs to do api translation and information reorganization.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/s/manage image/manage images/

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/s/Containerd should provide all function and/At least initially, containerd will provide all of the functionality and image/

docs/proposal.md Outdated
### Out of Scope
Following items are out of the scope of this design, we may address them in future version as enhancement or optimization.
* **Debuggability**: One of the biggest concern of CRI-containerd is debuggability. We should provide equivalent debuggability with Docker CLI through `kubectl`, [`cri-tools`](https://github.com/kubernetes-incubator/cri-tools) or containerd CLI.
* **Built-in CRI support**: The [plugin model](https://github.com/containerd/containerd/blob/master/design/plugins.md) provided by containerd makes it possible to directly build CRI support into containerd as a plugin, which will elimate one more hop from the stack. But because of the [limitation of golang plugin](https://github.com/containerd/containerd/issues/563), we have to either maintain our own branch or push CRI plugin upstream.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/s/elimate/eliminate/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

docs/proposal.md Outdated
| Proposal | | | ✓ | | | |
| Containerd Feature Complete | ✓ | ✓ | ✓ | | | |
| Runtime Management Integration | | | ✓ | ✓ | ✓ | ✓ |
| Image Management Integration | | | | ✓ | ✓ | ✓ |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should break these last two out into the separate parts listed above in the 1.7 and 1.8 sections.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, what do you mean? :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the table shows runtime management integration as being check marked over 6weeks, same for image management. But the prior paragraphs breakout these two concepts into smaller items that each have their own priority level. The table does not explain when those parts would be worked on.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. But only put the P0 items in the roadmap.

* [P0] Feature complete, pass 100% cri validation test.
* [P0] Integrate CRI-containerd with Kubernetes, and build the e2e/node e2e test framework.
* [P1] Address the debuggability problem.
### Q2 Roadmap
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proof of Concept (POC), First Half (1/2), Second Half (2/2)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not POC this time. This will be an alpha version.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right just defining the abbr. used in the table.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We only include the Q2 roadmap for now, the future is unpredictable. :)

@heartlock
Copy link
Contributor

+1 for this project!

docs/proposal.md Outdated
## Background
Containerd is a core container runtime, which provides the minimum set of functionalities to manage the complete container lifecycle of its host system, including container execution and supervision, image distribution and storage, etc.

Containerd was previously part of Docker, [introduced in Docker 1.11](https://blog.docker.com/2016/04/docker-engine-1-11-runc/), used to manage [runC](https://runc.io/) containers on the node. As is shown below, it creates a containerd-shim for each container, and the shim manages the lifecycle of its corresponding container.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/As is shown/As shown

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

docs/proposal.md Outdated
In Dec. 2016, Docker spun it out into a standalone component, and donated it to [CNCF](https://www.cncf.io/) in Mar. 2017.

## Motivation
Containerd is a potential alternative to Docker as the runtime for Kubernetes cluster. *Compared with Docker*, containerd has pros and cons.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/cluster/clusters

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

* [P0] Basic image management.
* [P0] Container networking.
* [P1] Container streaming/logging.
* [P2] Container/ImageFS Metrics.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: Include how you plan to validate the implementation, e.g., what kind of testing can we expect.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@Random-Liu
Copy link
Member Author

Thanks for reviewing everyone! Addressed comments and will squash the commit before merging.

@Random-Liu Random-Liu force-pushed the initial-document branch 2 times, most recently from 01813e1 to f6d0668 Compare April 14, 2017 21:47
Copy link
Member

@mikebrow mikebrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Random-Liu
Copy link
Member Author

Random-Liu commented Apr 14, 2017

@mikebrow Thanks for your patience! :)

Will squash and merge this.

@Random-Liu Random-Liu merged commit 2ec9bfc into containerd:master Apr 14, 2017
@Random-Liu Random-Liu deleted the initial-document branch April 14, 2017 22:09
ibuildthecloud pushed a commit to ibuildthecloud/cri that referenced this pull request Feb 24, 2020
Set default scheme in registryEndpoints for host
dcantah added a commit to dcantah/cri that referenced this pull request Jan 7, 2022
Remove Linux only block on sandbox mounts
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants