{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/29913","repository_url":"https://api.github.com/repos/kubernetes/kubernetes","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/29913/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/29913/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/29913/events","html_url":"https://github.com/kubernetes/kubernetes/issues/29913","id":168885274,"number":29913,"title":"Multiple kubelet runtimes at the node","user":{"login":"vefimova","id":11852061,"avatar_url":"https://avatars.githubusercontent.com/u/11852061?v=3","gravatar_id":"","url":"https://api.github.com/users/vefimova","html_url":"https://github.com/vefimova","followers_url":"https://api.github.com/users/vefimova/followers","following_url":"https://api.github.com/users/vefimova/following{/other_user}","gists_url":"https://api.github.com/users/vefimova/gists{/gist_id}","starred_url":"https://api.github.com/users/vefimova/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vefimova/subscriptions","organizations_url":"https://api.github.com/users/vefimova/orgs","repos_url":"https://api.github.com/users/vefimova/repos","events_url":"https://api.github.com/users/vefimova/events{/privacy}","received_events_url":"https://api.github.com/users/vefimova/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/component/kubelet","name":"component/kubelet","color":"0052cc"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/priority/P3","name":"priority/P3","color":"fef2c0"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/node","name":"team/node","color":"d2b48c"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2016-08-02T13:29:55Z","updated_at":"2016-08-11T06:40:46Z","closed_at":null,"body":"## **Motivation**\r\nIt's worth to enable running of \"mixed\" workloads (containers/vms/containers inside vms) using multiple kubelet runtime providers at the same node. Especially taking into consideration adding more runtimes not only for containers in near future: HyperContainer, oci/runc, kvm/qemu, libvirt.\r\n\r\n## **Key functionality to implement:**\r\n\r\n- **Add ability to set multiple runtimes for kubelet:**\r\n\r\n     It is said in container server-client runtime proposal that there will be transition period\r\n     during which old and new implementation will be available:\r\n\r\n  1.  local implemetation\r\n      Flag --container-runtimeshould support setting comma-separated list of runtime names\r\n  2.  gRPC implementation\r\n      A new flag --container-runtime-endpoint (overrides --container-runtime) which will identify the unix socket file of the remote runtime service should support setting comma-separated list of unix sockets\r\n\r\n\r\n- **Change kubelet:**\r\n  1. local implemetation\r\n     Create runtime interface for every specified runtime in flag and initialize map(\"runtime_name\"=>kubecontainer.Runtime) of runtimes in kubelet structure\r\n\r\n   2. gRPC implementation\r\n     Support map(\"runtime_name\"=>KubeletRuntimeClient) of available/health runtimes\r\n\r\n- **Kubelet needs to pass to api-server the list of available container runtimes on node.**\r\n   This can be achieved by changing field containerRuntimeVersion in NodeSystemInfo \r\n   to be array of kubeletRuntimes with items of type kubeletRuntime in node status message from    kubelet: \r\n\r\n```\r\nkubeletRuntimes: [\r\n\t\t{\r\n\t\t\ttype: \"docker\",\r\n\t\t\tversion: \"1.11.0\"\r\n\t\t},\r\n\t\t{\r\n\t\t\ttype: \"rkt\",\r\n\t\t\tversion: \"1.10.1\"\r\n\t\t}\r\n]\r\n```\r\n\r\n\r\n\r\n\r\n- **Setting the kubelet runtime for pod is specified in annotation (docker by default):**\r\n\r\n```\r\nAn example\r\n\r\n    kind: Pod\r\n    apiVersion: v1\r\n    metadata:\r\n        name: pod-abc   \r\n        labels:\r\n            foo: bar\r\n        annotations:\r\n           kubelet-runtime: docker\r\n```\r\n\r\n- **Add new policy for scheduler to pick up node accordingly to node annotation settings**\r\n\r\n\r\nrelated to #28789\r\nCC @thockin @freehan @brendandburns @dchen1107 @kubernetes/sig-node"},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/239084447","html_url":"https://github.com/kubernetes/kubernetes/issues/29913#issuecomment-239084447","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/29913","id":239084447,"user":{"login":"Gnep","id":716610,"avatar_url":"https://avatars.githubusercontent.com/u/716610?v=3","gravatar_id":"","url":"https://api.github.com/users/Gnep","html_url":"https://github.com/Gnep","followers_url":"https://api.github.com/users/Gnep/followers","following_url":"https://api.github.com/users/Gnep/following{/other_user}","gists_url":"https://api.github.com/users/Gnep/gists{/gist_id}","starred_url":"https://api.github.com/users/Gnep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Gnep/subscriptions","organizations_url":"https://api.github.com/users/Gnep/orgs","repos_url":"https://api.github.com/users/Gnep/repos","events_url":"https://api.github.com/users/Gnep/events{/privacy}","received_events_url":"https://api.github.com/users/Gnep/received_events","type":"User","site_admin":false},"created_at":"2016-08-11T06:40:46Z","updated_at":"2016-08-11T06:40:46Z","body":"The complexity is not only about runtime, also related with storage and network. \r\n\r\nHaving heterogeneous runtime on different nodes in the same cluster is ok, but once you started to mix different SDN implementation for different runtime in one cluster, the pain is there.\r\n\r\nI think it is better to use a two-layer scheduler and different sub-clusters for different runtime, until the other components (storage, network) are fully compatible."}}
{"actor":{"display_login":"Gnep"}}