Skip to content

Commit

Permalink
Merge pull request kubernetes#3 from MikeZappa87/zappa/v2
Browse files Browse the repository at this point in the history
Update Summary and Goals
  • Loading branch information
MikeZappa87 authored Jan 30, 2024
2 parents 217f1c3 + d547f62 commit f957158
Showing 1 changed file with 33 additions and 8 deletions.
41 changes: 33 additions & 8 deletions keps/sig-network/4410-k8s-network-interface/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ updates.
[documentation style guide]: https://github.com/kubernetes/community/blob/master/contributors/guide/style-guide.md
-->

This proposal is to design and implement the KNI [Kubernetes Networking Interface] or better known as Kubernetes Networking reImagined. KNI is a foundational network API that is specific to Kubernetes. KNI will provide the users the ability to make Kubernetes networking completely pluggable.
This proposal is to design and implement the KNI [Kubernetes Networking Interface] or better known as Kubernetes Networking reImagined. KNI will create a Network resource and provide an API that will provide network status, availability, how to attach a pod to a network, detach the pod from the network and update a pods network.

## Motivation

Expand Down Expand Up @@ -195,15 +195,18 @@ know that this has succeeded?
1. Design a cool looking t-shirt
2. Design and implement the KNI-API
3. Provide documentation, examples, troubleshooting and FAQ's for KNI.
* we should provide a example network runtime
* we should provide a example network runtime and easy starter project
4. Provide an API that is flexible for experimentation and opinionated use cases
* example extradata map[string] string
5. Provide integration with on premise or cloud systems to provide network status
6. Provide an API that provides networks available on the node
5. Provide APIs for the creation, configuration and management of networks for `Pods`.
6. Provide an API that will update a network attachment of a pod
7. Determine the reference implementation
8. Establish feature parity with current [ADD, DEL]
9. Decouple Node and Pod network setup
10. Ensure that the network runtime is consolidated inside of a Pod
8. Establish feature parity with current CNI [ADD, DEL]
9. We should decouple the Pod and Node Network setup (The reporting of this could be different statuses?)
10. Provide the ability to run garbage collection to ensure no resources are left behind
11. We will provide the ability to identify the IP address family without parsing the value (such as a field)
12. Make a design that is backwards compatible with the CNI
13. Guarantee the network is setup and in a healthy state before containers are started (ephemeral, init, regular)

### Non-Goals

Expand Down Expand Up @@ -241,8 +244,19 @@ bogged down.

#### Story 1

As a cluster operator, I need the ability to determine my network(s) is ready so that my pods come up with a working network.

#### Story 2

As a cluster operator, I need the ability to determine what networks are available on my node so that upstream components can ensure the pod is scheduled on the appropriate node.

#### Story 3

As a Kubernetes developer, I need the ability to have extension points for pod network setup, teardown and update so that I can support future Kubernetes networking features with either reducing the changes to core kubernetes or eliminating them

#### Story 4


### Notes/Constraints/Caveats (Optional)

<!--
Expand All @@ -252,6 +266,15 @@ Go in to as much detail as necessary here.
This might be a good place to talk about core concepts and how they relate.
-->

Changes to the pod specification will require hard evidence.

The specifics of "Network Readiness" is an implementation detail. We need to provide this RPC to the user.

We should consider the trade offs to using a Native K8s Network object or CRD's.
Using a native object would allow passing a slice of network type to AttachNetwork

Since the network runtime can be run separated from the container runtime, you can package everything into a pod and not need to have binaries on disk. This allows the CNI plugins to be isolated in the pod and the pod will never need to mount /opt/cni/bin or /etc/cni/net.d. This offers a potentially more ability to control execution. Keep in mind CNI is the implementation however when this is used chaining is still available.

### Risks and Mitigations

<!--
Expand All @@ -277,7 +300,9 @@ proposal will be implemented, this is the place to discuss them.

### Draft KNI-API (used in POC)

We will review with community and take feedback
We will review with community and take feedback.

This is the version where we don't have a native k8s network object aka a 'message PodNetworkRequest/Response' for the proto

```
service KNI {
Expand Down

0 comments on commit f957158

Please sign in to comment.