From e51409a9cf682e0d6938fcf370f674f7e535c96a Mon Sep 17 00:00:00 2001 From: Random-Liu Date: Fri, 14 Apr 2017 00:14:34 -0700 Subject: [PATCH] Add initial documents. --- CONTRIBUTING.md | 26 ++++++++++ OWNERS | 3 ++ README.md | 23 ++++++++- code-of-conduct.md | 58 +++++++++++++++++++++ docs/containerd.png | Bin 0 -> 52793 bytes docs/cri-containerd.png | Bin 0 -> 22902 bytes docs/performance.png | Bin 0 -> 71029 bytes docs/proposal.md | 111 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 CONTRIBUTING.md create mode 100644 OWNERS create mode 100644 code-of-conduct.md create mode 100644 docs/containerd.png create mode 100644 docs/cri-containerd.png create mode 100644 docs/performance.png create mode 100644 docs/proposal.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..aece34591 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# Contributing guidelines + +## How to become a contributor and submit your own code + +### Contributor License Agreements + +We'd love to accept your patches! Before we can take them, we have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement (CLA). + + * If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](https://identity.linuxfoundation.org/node/285/node/285/individual-signup). + * If you work for a company that wants to allow you to contribute your work, then you'll need to sign a [corporate CLA](https://identity.linuxfoundation.org/node/285/organization-signup). + +Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to accept your pull requests. + +### Contributing A Patch + +1. Submit an issue describing your proposed change to the repo in question. +1. The [repo owners](OWNERS) will respond to your issue promptly. +1. If your proposed change is accepted, and you haven't already done so, sign a Contributor License Agreement (see details above). +1. Fork the desired repo, develop and test your code changes. +1. Submit a pull request. + +### 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/community/blob/master/contributors/devel/development.md#dependency-management). diff --git a/OWNERS b/OWNERS new file mode 100644 index 000000000..7b797e5ad --- /dev/null +++ b/OWNERS @@ -0,0 +1,3 @@ +assignees: + - Random-Liu + - mikebrow diff --git a/README.md b/README.md index 6cfad5191..b4f9704e5 100644 --- a/README.md +++ b/README.md @@ -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). +![cri-containerd](./docs/cri-containerd.png) +## Current Status +We are currently working toward an alpha version to be used in conjunction with Kubernetes 1.7. See the [roadmap](./docs/proposal.md#roadmap-and-milestones) for information about current and future milestones. +## Documentation +See [here](./docs) for documentation. +## Contributing +Interested in contributing? Check out the [documentation](./CONTRIBUTING.md). +## Kubernetes Incubator +This is a [Kubernetes Incubator project](https://github.com/kubernetes/community/blob/master/incubator.md). The project was established 2017/4/13. The incubator team for the project is: +* Sponsor: Dawn Chen ([@dchen1107](https://github.com/dchen1107)) +* Champion: Yuju Hong ([@yujuhong](https://github.com/yujuhong)) +* SIG: [sig-node](https://github.com/kubernetes/community/tree/master/sig-node) + +For more information about sig-node, please check out: +* [community site](https://github.com/kubernetes/community/tree/master/sig-node). +* Slack: #sig-node +* Mailing List: https://groups.google.com/forum/#!forum/kubernetes-sig-node +## Code of Conduct +Participation in the Kubernetes community is governed by the +[Kubernetes Code of Conduct](./code-of-conduct.md). diff --git a/code-of-conduct.md b/code-of-conduct.md new file mode 100644 index 000000000..6453201ca --- /dev/null +++ b/code-of-conduct.md @@ -0,0 +1,58 @@ +## Kubernetes Community Code of Conduct + +### Contributor Code of Conduct + +As contributors and maintainers of this project, and in the interest of fostering +an open and welcoming community, we pledge to respect all people who contribute +through reporting issues, posting feature requests, updating documentation, +submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free experience for +everyone, regardless of level of experience, gender, gender identity and expression, +sexual orientation, disability, personal appearance, body size, race, ethnicity, age, +religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, such as physical or electronic addresses, + without explicit permission +* Other unethical or unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are not +aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers +commit themselves to fairly and consistently applying these principles to every aspect +of managing this project. Project maintainers who do not follow or enforce the Code of +Conduct may be permanently removed from the project team. + +This code of conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a Kubernetes maintainer, Sarah Novotny , and/or Dan Kohn . + +This Code of Conduct is adapted from the Contributor Covenant +(http://contributor-covenant.org), version 1.2.0, available at +http://contributor-covenant.org/version/1/2/0/ + +### Kubernetes Events Code of Conduct + +Kubernetes events are working conferences intended for professional networking and collaboration in the +Kubernetes community. Attendees are expected to behave according to professional standards and in accordance +with their employer's policies on appropriate workplace behavior. + +While at Kubernetes events or related social networking opportunities, attendees should not engage in +discriminatory or offensive speech or actions regarding gender, sexuality, race, or religion. Speakers should +be especially aware of these concerns. + +The Kubernetes team does not condone any statements by speakers contrary to these standards. The Kubernetes +team reserves the right to deny entrance and/or eject from an event (without refund) any individual found to +be engaging in discriminatory or offensive speech or actions. + +Please bring any concerns to to the immediate attention of Kubernetes event staff + + +[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/code-of-conduct.md?pixel)]() diff --git a/docs/containerd.png b/docs/containerd.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb1802b8784ba7cda2f9c6f135da2d48f43660a GIT binary patch literal 52793 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≀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 bHEk;QYPB|8WjiYh?UYFarK?)1VjcJ&3QW<8 literal 0 HcmV?d00001 diff --git a/docs/performance.png b/docs/performance.png new file mode 100644 index 0000000000000000000000000000000000000000..387fa9bb37031d82a0c44526819118f606993f01 GIT binary patch literal 71029 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 n2h$sY}UJFwbYF` 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 AUH||9 literal 0 HcmV?d00001 diff --git a/docs/proposal.md b/docs/proposal.md new file mode 100644 index 000000000..4a857ea49 --- /dev/null +++ b/docs/proposal.md @@ -0,0 +1,111 @@ +Containerd CRI Integration +============= +Author: Lantao Liu (@random-liu) +## Abstract +This proposal aims to integrate [containerd](https://github.com/containerd/containerd) with Kubelet against the [container runtime interface (CRI)](https://github.com/kubernetes/kubernetes/blob/v1.6.0/pkg/kubelet/api/v1alpha1/runtime/api.proto). +## 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 [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 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 Inc. spun it out into a standalone component, and donated it to [CNCF](https://www.cncf.io/) in Mar. 2017. + +## Motivation +Containerd is one potential alternative to Docker as the runtime for Kubernetes clusters. *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 aligns with Kubernetes' requirements. It provides the required functionalities and the flexibility for areas like image pulling, networking, volume and logging etc. +* **Performance**: + * Containerd consumes less resource than Docker at least because it's a subset of Docker; + * Containerd CRI integration eliminates an extra hop in the stack (as shown below). ![performance](./performance.png) +* **Neutral Foundation**: Containerd is part of CNCF now. +### Cons +* **User Adoption**: + * Ideally, Kubernetes users don't interact with the underlying container runtime directly. However, for the lack of debug toolkits, sometimes users still need to login the node to debug with Docker CLI directly. + * Containerd provides barebone CLIs [ctr](https://github.com/containerd/containerd/tree/master/cmd/ctr) and [dist](https://github.com/containerd/containerd/tree/master/cmd/dist) for development and debugging purpose, but they may not be sufficient and necessary. Additionally, presuming these are sufficient and necessary tools, a plan and time would be needed to sufficiently document these CLIs and educate users in their use. +* **Maturity**: The rescoped containerd is pretty new, and it's still under heavy development. +## Goals +* Make sure containerd meets the requirement of Kubernetes, now and into the foreseeable future. +* Implement containerd CRI shim and make sure it provides equivalent functionality, usability and debuggability. +* Improve Kubernetes by taking advantage of the flexibility provided by containerd. +## Design +The following sections discuss the design aspects of the containerd CRI integration. For the purposes of this doc, the containerd CRI integration will be referred to as `CRI-containerd`. +### Container Lifecycle +CRI-containerd relies on containerd to manage container lifecycle. + +Ideally, CRI-containerd only needs to do api translation and information reorganization. However, CRI-containerd needs to maintain some metadata because: +* There is a mismatch between container lifecycle of CRI and containerd - containerd only tracks running processes, once the container and it's corresponding containerd-shim exit, the container is no longer visible in the containerd API. +* Some sandbox/container metadata is not provided by containerd, and we can not leverage OCI runtime annotation to store it because of the container lifecycle mismatch, e.g. labels/annotations, `PodSandboxID` of a container, `FinishedAt` timestamp, `ExitCode`, `Mounts` etc. + +CRI-containerd should checkpoint these metadata itself or use [containerd metadata service](https://github.com/containerd/containerd/blob/0a5544d8c4dab44dfc682f5ad07f1cd011c0a115/design/plugins.md#core) if available. +### Container Logging +Containerd doesn't provide persistent container log. It redirects container STDIO into different FIFOs. + +CRI-containerd should start a goroutine (process/container in the future) to: +* Continuously drain the FIFO; +* Decorate the log line into [CRI-defined format](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/kubelet-cri-logging.md#proposed-solution); +* Write the log into [CRI-defined log path](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/kubelet-cri-logging.md#proposed-solution). +### Container Streaming +Containerd supports creating a process in the container with `Exec`, and the STDIO is also exposed as FIFOs. Containerd also supports resizing console of a specific process with `Pty`. + +CRI-containerd could reuse the [streaming server](https://github.com/kubernetes/kubernetes/blob/release-1.6/pkg/kubelet/server/streaming/server.go), it should implement the [streaming runtime interface](https://github.com/kubernetes/kubernetes/blob/release-1.6/pkg/kubelet/server/streaming/server.go#L61-L65). + +For different CRI streaming functions: +* `ExecSync`: CRI-containerd should use `Exec` to create the exec process, collect the stdout/stderr of the process, and wait for the process to terminate. +* `Exec`: CRI-containerd should use `Exec` to create the exec process, create a goroutine (process/container) to redirect streams, and wait for the process to terminate. +* `Attach`: CRI-containerd should create a goroutine (process/container) to read the existing container log to the output, redirect streams of the init process, and wait for any stream to be closed. +* `PortForward`: CRI-containerd could implement this with `socat` and `nsenter`, similar with [current Docker portforward implementation](https://github.com/kubernetes/kubernetes/blob/release-1.6/pkg/kubelet/dockertools/docker_manager.go#L1373-L1428). +### Container Networking +Containerd doesn't provide container networking, but OCI runtime spec supports joining a linux container into an existing network namespace. + +CRI-containerd should: +* Create a network namespace for a sandbox; +* 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 in the same sandbox share the network namespace. +### Container Metrics +Containerd provides [container cgroup metrics](https://github.com/containerd/containerd/blob/master/reports/2017-03-17.md#metrics), and plans to provide [container writable layer disk usage](https://github.com/containerd/containerd/issues/678). + +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 images. Containerd should provide all function and information required by CRI, and CRI-containerd only needs to do api translation and information reorganization. + +### ImageFS Metrics +Containerd plans to provide [image filesystem metrics](https://github.com/containerd/containerd/issues/678). + +CRI image filesystem metrics needs to be defined ([#33048](https://github.com/kubernetes/kubernetes/issues/33048)). After that, we should make sure containerd provides the required metrics, and CRI-containerd should translate containerd image filesystem metrics into CRI image filesystem metrics. +### 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 eliminate 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. +* **Seccomp**: ([#36997](https://github.com/kubernetes/kubernetes/issues/36997)) Seccomp is supported in OCI runtime spec. However, current seccomp implementation in Kubernetes is experimental and docker specific, the api needs to be defined in CRI first before CRI-containerd implements it. +* **Streaming server authentication**: ([#36666](https://github.com/kubernetes/kubernetes/issues/36666)) CRI-containerd will be out-of-process with Kubelet, so it could not reuse Kubelet authentication. Its streaming server should implement its own authentication mechanism. +* **Move container facilities into pod cgroup**: Container facilities including container image puller, container streaming handler, log handler and containerd-shim serve a specific container. They should be moved to the corresponding pod cgroup, and the overhead introduced by them should be charged to the pod. +* **Log rotation**: ([#42718](https://github.com/kubernetes/kubernetes/issues/42718)) Container log rotation is under design. A function may be added in CRI to signal the runtime to reopen log file. CRI-containerd should implement that function after it is defined. +* **Exec container**: With the flexibility provided by containerd, it is possible to implement `Exec` with a separate container sharing the same rootfs and mount namespace with the original container. The advantage is that the `Exec` container could have it's own sub-cgroup, so that it will not consume the resource of application container and user could specify dedicated resource for it. +* **Advanced image management**: The image management interface in CRI is relatively simple because the requirement of Kubelet image management is not clearly scoped out. In the future, we may want to leverage the flexibility provided by containerd more, e.g. estimate image size before pulling etc. +* ... +## Roadmap and Milestones +### Milestones +#### Kubernetes 1.7 - Q2 +* [P0] Basic container lifecycle. +* [P0] Basic image management. +* [P0] Container networking. +* [P1] Container streaming/logging. +* [P2] Container/ImageFS Metrics. + +*Test Plan: Each feature added should have unit test and pass its corresponding cri validation test.* +#### Kubernetes 1.8 - Q3 +* [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 +| Item | 1/2 Mar. | 2/2 Mar. | 1/2 Apr. | 2/2 Apr. | 1/2 May. | 2/2 May. | +|:--------------------------------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:| +| Survey | ✓ | | | | | | +| POC | | ✓ | | | | | +| Proposal | | | ✓ | | | | +| Containerd Feature Complete | ✓ | ✓ | ✓ | | | | +| Runtime Management Integration | | | ✓ | ✓ | ✓ | ✓ | +| Image Management Integration | | | | ✓ | ✓ | ✓ | +| Container Networking Integration | | | | | ✓ | ✓ |