{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/64646719","id":64646719,"diff_hunk":"@@ -0,0 +1,253 @@\n+<!-- BEGIN MUNGE: UNVERSIONED_WARNING -->\n+\n+<!-- BEGIN STRIP_FOR_RELEASE -->\n+\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+<img src=\"http://kubernetes.io/img/warning.png\" alt=\"WARNING\"\n+     width=\"25\" height=\"25\">\n+\n+<h2>PLEASE NOTE: This document applies to the HEAD of the source tree</h2>\n+\n+If you are using a released version of Kubernetes, you should\n+refer to the docs that go with that version.\n+\n+Documentation for other releases can be found at\n+[releases.k8s.io](http://releases.k8s.io).\n+</strong>\n+--\n+\n+<!-- END STRIP_FOR_RELEASE -->\n+\n+<!-- END MUNGE: UNVERSIONED_WARNING -->\n+\n+# Redefine Container Runtime Interface\n+\n+The umbrella issue: [#22964](https://issues.k8s.io/22964)\n+\n+## Motivation\n+\n+Kubelet employs a declarative pod-level interface, which acts as the sole\n+integration point for container runtimes (e.g., `docker` and `rkt`). The\n+high-level, declarative interface has caused higher integration and maintenance\n+cost, and also slowed down feature velocity for the following reasons.\n+  1. **Not every container runtime supports the concept of pods natively**.\n+     When integrating with Kubernetes, a significant amount of work needs to\n+     go into implementing a shim of significant size to support all pod\n+     features. This also adds maintenance overhead (e.g., `docker`).\n+  2. **High-level interface discourage code sharing and reuse among runtimes**.\n+     E.g, each runtime today implements an all-encompassing `SyncPod()`\n+     function, with the Pod Spec as the input argument. The runtime implements\n+     logic to determine how to achieve the desired state based on the current\n+     status, and (re-)starts pods/containers and manage lifecycle hooks\n+     accordingly.\n+  3. **Pod Spec is susceptible to inconsistent interpretations**. E.g., `rkt`\n+     does not support container-level operations and assume immutable pods.\n+  4. **Pod Spec is evolving rapidly**. New features are being added constantly.\n+     Any pod-level change or addition requires changing of all container\n+     runtime shims. E.g., init containers and volume containers.\n+\n+## Goals and Non-Goals\n+\n+The goals of defining the interface are to\n+ - **improve extensibility**: Easier container runtime integration.\n+ - **improve feature velocity**\n+ - **improve code maintainability**\n+\n+The non-goals include\n+ - proposing *how* to integrate with new runtimes, i.e., where the shim\n+   resides. The discussion of adopting a client-server architecture is tracked\n+   by [#13768](https://issues.k8s.io/13768), where benefits and shortcomings of\n+   such an architecture is discussed.\n+ - versioning the new interface/API. We intend to provide API versioning to\n+   offer stability for runtime integrations, but the details are beyond the\n+   scope of this proposal.\n+ - adding support to Windows containers. Windows container support is a\n+   parallel effort and is tracked by [#22623](https://issues.k8s.io/22623).\n+   The new interface will not be augmented to support Windows containers, but\n+   it will be made extensible such that the support can be added in the future.\n+ - re-defining Kubelet's internal interfaces. These interfaces, though, may\n+   affect Kubelet's maintainability, is not relevant to runtime integration.\n+ - improving Kubelet's efficiency or performance, e.g., adopting event stream\n+   from the container runtime [#8756](https://issues.k8s.io/8756),\n+   [#16831](https://issues.k8s.io/16831).\n+\n+## Requirements\n+\n+ * Support existing integrated container runtimes: `docker` and `rkt`.\n+ * Support hypervisor-based container runtimes: `hyper`.\n+\n+## Container Runtime Interface\n+\n+The main idea of the proposal is to adopt an imperative container-level\n+interface, which allows Kubelet to control the lifecycles of the containers\n+inside a pod, across all container runtimes. A separate PodSandbox concept\n+is defined to represent the environment in which a group of containers in a\n+pod will be created and run. The container runtimes may interpret the sandbox\n+concept differently based on how it operates internally. For runtimes relying\n+on hypervisor, sandbox represents a virtual machine. For others, it can be\n+Linux namespaces.\n+\n+In short, a PodSandbox should have the following features.","path":"docs/proposals/container-runtime-interface-v1.md","position":97,"original_position":97,"commit_id":"7674a3563e076840baf54e0ef6d24dd7b0c916b0","original_commit_id":"7674a3563e076840baf54e0ef6d24dd7b0c916b0","user":{"login":"mrunalp","id":53798,"avatar_url":"https://avatars.githubusercontent.com/u/53798?v=3","gravatar_id":"","url":"https://api.github.com/users/mrunalp","html_url":"https://github.com/mrunalp","followers_url":"https://api.github.com/users/mrunalp/followers","following_url":"https://api.github.com/users/mrunalp/following{/other_user}","gists_url":"https://api.github.com/users/mrunalp/gists{/gist_id}","starred_url":"https://api.github.com/users/mrunalp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrunalp/subscriptions","organizations_url":"https://api.github.com/users/mrunalp/orgs","repos_url":"https://api.github.com/users/mrunalp/repos","events_url":"https://api.github.com/users/mrunalp/events{/privacy}","received_events_url":"https://api.github.com/users/mrunalp/received_events","type":"User","site_admin":false},"body":"Selecting systemd cgroup vs cgroupfs could be a runtime option/configuration for runtimes such as runc that support both. ","created_at":"2016-05-25T20:25:52Z","updated_at":"2016-05-25T20:25:52Z","html_url":"https://github.com/kubernetes/kubernetes/pull/25899#discussion_r64646719","pull_request_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments/64646719"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/25899#discussion_r64646719"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899","id":70751838,"html_url":"https://github.com/kubernetes/kubernetes/pull/25899","diff_url":"https://github.com/kubernetes/kubernetes/pull/25899.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/25899.patch","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/25899","number":25899,"state":"open","locked":false,"title":"Add a new container runtime interface","user":{"login":"yujuhong","id":10524058,"avatar_url":"https://avatars.githubusercontent.com/u/10524058?v=3","gravatar_id":"","url":"https://api.github.com/users/yujuhong","html_url":"https://github.com/yujuhong","followers_url":"https://api.github.com/users/yujuhong/followers","following_url":"https://api.github.com/users/yujuhong/following{/other_user}","gists_url":"https://api.github.com/users/yujuhong/gists{/gist_id}","starred_url":"https://api.github.com/users/yujuhong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yujuhong/subscriptions","organizations_url":"https://api.github.com/users/yujuhong/orgs","repos_url":"https://api.github.com/users/yujuhong/repos","events_url":"https://api.github.com/users/yujuhong/events{/privacy}","received_events_url":"https://api.github.com/users/yujuhong/received_events","type":"User","site_admin":false},"body":"This PR includes a proposal and a Go file to re-define the container runtime interface.\r\nThis is based on the original doc: https://docs.google.com/document/d/1ietD5eavK0aTuMQTw6-21r67UU73_vqYSUIPFdA0J5Q/\r\n\r\nThe umbrella issues is #22964\r\n\r\n/cc @kubernetes/sig-node ","created_at":"2016-05-19T19:33:23Z","updated_at":"2016-05-25T20:25:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0fb7fc9d6a1e2d1ee89a60f5a057fa7916efe2fb","assignee":{"login":"dchen1107","id":7740897,"avatar_url":"https://avatars.githubusercontent.com/u/7740897?v=3","gravatar_id":"","url":"https://api.github.com/users/dchen1107","html_url":"https://github.com/dchen1107","followers_url":"https://api.github.com/users/dchen1107/followers","following_url":"https://api.github.com/users/dchen1107/following{/other_user}","gists_url":"https://api.github.com/users/dchen1107/gists{/gist_id}","starred_url":"https://api.github.com/users/dchen1107/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dchen1107/subscriptions","organizations_url":"https://api.github.com/users/dchen1107/orgs","repos_url":"https://api.github.com/users/dchen1107/repos","events_url":"https://api.github.com/users/dchen1107/events{/privacy}","received_events_url":"https://api.github.com/users/dchen1107/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899/commits","review_comments_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899/comments","review_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/25899/comments","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/7674a3563e076840baf54e0ef6d24dd7b0c916b0","head":{"label":"yujuhong:ncri","ref":"ncri","sha":"7674a3563e076840baf54e0ef6d24dd7b0c916b0","user":{"login":"yujuhong","id":10524058,"avatar_url":"https://avatars.githubusercontent.com/u/10524058?v=3","gravatar_id":"","url":"https://api.github.com/users/yujuhong","html_url":"https://github.com/yujuhong","followers_url":"https://api.github.com/users/yujuhong/followers","following_url":"https://api.github.com/users/yujuhong/following{/other_user}","gists_url":"https://api.github.com/users/yujuhong/gists{/gist_id}","starred_url":"https://api.github.com/users/yujuhong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yujuhong/subscriptions","organizations_url":"https://api.github.com/users/yujuhong/orgs","repos_url":"https://api.github.com/users/yujuhong/repos","events_url":"https://api.github.com/users/yujuhong/events{/privacy}","received_events_url":"https://api.github.com/users/yujuhong/received_events","type":"User","site_admin":false},"repo":{"id":29618390,"name":"kubernetes","full_name":"yujuhong/kubernetes","owner":{"login":"yujuhong","id":10524058,"avatar_url":"https://avatars.githubusercontent.com/u/10524058?v=3","gravatar_id":"","url":"https://api.github.com/users/yujuhong","html_url":"https://github.com/yujuhong","followers_url":"https://api.github.com/users/yujuhong/followers","following_url":"https://api.github.com/users/yujuhong/following{/other_user}","gists_url":"https://api.github.com/users/yujuhong/gists{/gist_id}","starred_url":"https://api.github.com/users/yujuhong/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yujuhong/subscriptions","organizations_url":"https://api.github.com/users/yujuhong/orgs","repos_url":"https://api.github.com/users/yujuhong/repos","events_url":"https://api.github.com/users/yujuhong/events{/privacy}","received_events_url":"https://api.github.com/users/yujuhong/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/yujuhong/kubernetes","description":"Container Cluster Manager","fork":true,"url":"https://api.github.com/repos/yujuhong/kubernetes","forks_url":"https://api.github.com/repos/yujuhong/kubernetes/forks","keys_url":"https://api.github.com/repos/yujuhong/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yujuhong/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yujuhong/kubernetes/teams","hooks_url":"https://api.github.com/repos/yujuhong/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/yujuhong/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/yujuhong/kubernetes/events","assignees_url":"https://api.github.com/repos/yujuhong/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/yujuhong/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/yujuhong/kubernetes/tags","blobs_url":"https://api.github.com/repos/yujuhong/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yujuhong/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yujuhong/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/yujuhong/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yujuhong/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/yujuhong/kubernetes/languages","stargazers_url":"https://api.github.com/repos/yujuhong/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/yujuhong/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/yujuhong/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/yujuhong/kubernetes/subscription","commits_url":"https://api.github.com/repos/yujuhong/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/yujuhong/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/yujuhong/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/yujuhong/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/yujuhong/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/yujuhong/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yujuhong/kubernetes/merges","archive_url":"https://api.github.com/repos/yujuhong/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yujuhong/kubernetes/downloads","issues_url":"https://api.github.com/repos/yujuhong/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/yujuhong/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/yujuhong/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/yujuhong/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yujuhong/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/yujuhong/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/yujuhong/kubernetes/deployments","created_at":"2015-01-21T21:45:40Z","updated_at":"2016-01-21T20:42:14Z","pushed_at":"2016-05-25T16:51:32Z","git_url":"git://github.com/yujuhong/kubernetes.git","ssh_url":"git@github.com:yujuhong/kubernetes.git","clone_url":"https://github.com/yujuhong/kubernetes.git","svn_url":"https://github.com/yujuhong/kubernetes","homepage":"http://kubernetes.io","size":237799,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"9784dff94ecc5bd3370f9f6d9a2af3439275f918","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":20580498,"name":"kubernetes","full_name":"kubernetes/kubernetes","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/kubernetes","description":"Container Cluster Manager from Google","fork":false,"url":"https://api.github.com/repos/kubernetes/kubernetes","forks_url":"https://api.github.com/repos/kubernetes/kubernetes/forks","keys_url":"https://api.github.com/repos/kubernetes/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/kubernetes/teams","hooks_url":"https://api.github.com/repos/kubernetes/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/kubernetes/events","assignees_url":"https://api.github.com/repos/kubernetes/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/kubernetes/tags","blobs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/kubernetes/languages","stargazers_url":"https://api.github.com/repos/kubernetes/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/kubernetes/subscription","commits_url":"https://api.github.com/repos/kubernetes/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/kubernetes/merges","archive_url":"https://api.github.com/repos/kubernetes/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/kubernetes/downloads","issues_url":"https://api.github.com/repos/kubernetes/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/kubernetes/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/kubernetes/deployments","created_at":"2014-06-06T22:56:04Z","updated_at":"2016-05-25T20:22:16Z","pushed_at":"2016-05-25T20:22:23Z","git_url":"git://github.com/kubernetes/kubernetes.git","ssh_url":"git@github.com:kubernetes/kubernetes.git","clone_url":"https://github.com/kubernetes/kubernetes.git","svn_url":"https://github.com/kubernetes/kubernetes","homepage":"http://kubernetes.io","size":448368,"stargazers_count":14577,"watchers_count":14577,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":4441,"mirror_url":null,"open_issues_count":3699,"forks":4441,"open_issues":3699,"watchers":14577,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899"},"html":{"href":"https://github.com/kubernetes/kubernetes/pull/25899"},"issue":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/25899"},"comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/issues/25899/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/kubernetes/pulls/25899/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/kubernetes/statuses/7674a3563e076840baf54e0ef6d24dd7b0c916b0"}}}}
{"actor":{"display_login":"mrunalp"}}