file kubelet-cri-networking.md was moved to the new sig-node folder - URLs in k/community were updated

This commit is contained in:
eduartua 2019-01-28 16:34:28 -06:00
parent 74257bb0e9
commit 1fefac0cee
3 changed files with 59 additions and 56 deletions

View File

@ -1,56 +1,3 @@
# Container Runtime Interface (CRI) Networking Specifications
This file has moved to https://git.k8s.io/community/contributors/devel/sig-node/kubelet-cri-networking.md.
## Introduction
[Container Runtime Interface (CRI)](container-runtime-interface.md) is
an ongoing project to allow container
runtimes to integrate with kubernetes via a newly-defined API. This document
specifies the network requirements for container runtime
interface (CRI). CRI networking requirements expand upon kubernetes pod
networking requirements. This document does not specify requirements
from upper layers of kubernetes network stack, such as `Service`. More
background on k8s networking could be found
[here](http://kubernetes.io/docs/admin/networking/)
## Requirements
1. Kubelet expects the runtime shim to manage pod's network life cycle. Pod
networking should be handled accordingly along with pod sandbox operations.
* `RunPodSandbox` must set up pod's network. This includes, but is not limited
to allocating a pod IP, configuring the pod's network interfaces and default
network route. Kubelet expects the pod sandbox to have an IP which is
routable within the k8s cluster, if `RunPodSandbox` returns successfully.
`RunPodSandbox` must return an error if it fails to set up the pod's network.
If the pod's network has already been set up, `RunPodSandbox` must skip
network setup and proceed.
* `StopPodSandbox` must tear down the pod's network. The runtime shim
must return error on network tear down failure. If pod's network has
already been torn down, `StopPodSandbox` must skip network tear down and proceed.
* `RemovePodSandbox` may tear down pod's network, if the networking has
not been torn down already. `RemovePodSandbox` must return error on
network tear down failure.
* Response from `PodSandboxStatus` must include pod sandbox network status.
The runtime shim must return an empty network status if it failed
to construct a network status.
2. User supplied pod networking configurations, which are NOT directly
exposed by the kubernetes API, should be handled directly by runtime
shims. For instance, `hairpin-mode`, `cni-bin-dir`, `cni-conf-dir`, `network-plugin`,
`network-plugin-mtu` and `non-masquerade-cidr`. Kubelet will no longer handle
these configurations after the transition to CRI is complete.
3. Network configurations that are exposed through the kubernetes API
are communicated to the runtime shim through `UpdateRuntimeConfig`
interface, e.g. `podCIDR`. For each runtime and network implementation,
some configs may not be applicable. The runtime shim may handle or ignore
network configuration updates from `UpdateRuntimeConfig` interface.
## Extensibility
* Kubelet is oblivious to how the runtime shim manages networking, i.e
runtime shim is free to use [CNI](https://github.com/containernetworking/cni),
[CNM](https://github.com/docker/libnetwork/blob/master/docs/design.md) or
any other implementation as long as the CRI networking requirements and
k8s networking requirements are satisfied.
* Runtime shims have full visibility into pod networking configurations.
* As more network feature arrives, CRI will evolve.
## Related Issues
* Kubelet network plugin for client/server container runtimes [#28667](https://github.com/kubernetes/kubernetes/issues/28667)
* CRI networking umbrella issue [#37316](https://github.com/kubernetes/kubernetes/issues/37316)
This file is a placeholder to preserve links. Please remove by April 28, 2019 or the release of kubernetes 1.13, whichever comes first.

View File

@ -59,7 +59,7 @@ Below is a mixed list of CRI specifications/requirements, design docs and
proposals. We are working on adding more documentation for the API.
- [Original proposal](https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/proposals/container-runtime-interface-v1.md)
- [Networking](/contributors/devel/kubelet-cri-networking.md)
- [Networking](kubelet-cri-networking.md)
- [Container metrics](cri-container-stats.md)
- [Exec/attach/port-forward streaming requests](https://docs.google.com/document/d/1OE_QoInPlVCK9rMAx9aybRmgFiVjHpJCHI9LrfdNM_s/edit?usp=sharing)
- [Container stdout/stderr logs](https://github.com/kubernetes/kubernetes/blob/release-1.5/docs/proposals/kubelet-cri-logging.md)

View File

@ -0,0 +1,56 @@
# Container Runtime Interface (CRI) Networking Specifications
## Introduction
[Container Runtime Interface (CRI)](container-runtime-interface.md) is
an ongoing project to allow container
runtimes to integrate with kubernetes via a newly-defined API. This document
specifies the network requirements for container runtime
interface (CRI). CRI networking requirements expand upon kubernetes pod
networking requirements. This document does not specify requirements
from upper layers of kubernetes network stack, such as `Service`. More
background on k8s networking could be found
[here](http://kubernetes.io/docs/admin/networking/)
## Requirements
1. Kubelet expects the runtime shim to manage pod's network life cycle. Pod
networking should be handled accordingly along with pod sandbox operations.
* `RunPodSandbox` must set up pod's network. This includes, but is not limited
to allocating a pod IP, configuring the pod's network interfaces and default
network route. Kubelet expects the pod sandbox to have an IP which is
routable within the k8s cluster, if `RunPodSandbox` returns successfully.
`RunPodSandbox` must return an error if it fails to set up the pod's network.
If the pod's network has already been set up, `RunPodSandbox` must skip
network setup and proceed.
* `StopPodSandbox` must tear down the pod's network. The runtime shim
must return error on network tear down failure. If pod's network has
already been torn down, `StopPodSandbox` must skip network tear down and proceed.
* `RemovePodSandbox` may tear down pod's network, if the networking has
not been torn down already. `RemovePodSandbox` must return error on
network tear down failure.
* Response from `PodSandboxStatus` must include pod sandbox network status.
The runtime shim must return an empty network status if it failed
to construct a network status.
2. User supplied pod networking configurations, which are NOT directly
exposed by the kubernetes API, should be handled directly by runtime
shims. For instance, `hairpin-mode`, `cni-bin-dir`, `cni-conf-dir`, `network-plugin`,
`network-plugin-mtu` and `non-masquerade-cidr`. Kubelet will no longer handle
these configurations after the transition to CRI is complete.
3. Network configurations that are exposed through the kubernetes API
are communicated to the runtime shim through `UpdateRuntimeConfig`
interface, e.g. `podCIDR`. For each runtime and network implementation,
some configs may not be applicable. The runtime shim may handle or ignore
network configuration updates from `UpdateRuntimeConfig` interface.
## Extensibility
* Kubelet is oblivious to how the runtime shim manages networking, i.e
runtime shim is free to use [CNI](https://github.com/containernetworking/cni),
[CNM](https://github.com/docker/libnetwork/blob/master/docs/design.md) or
any other implementation as long as the CRI networking requirements and
k8s networking requirements are satisfied.
* Runtime shims have full visibility into pod networking configurations.
* As more network feature arrives, CRI will evolve.
## Related Issues
* Kubelet network plugin for client/server container runtimes [#28667](https://github.com/kubernetes/kubernetes/issues/28667)
* CRI networking umbrella issue [#37316](https://github.com/kubernetes/kubernetes/issues/37316)