multus-service

module
v0.0.0-...-600c758 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: Apache-2.0

README

multus-service (archived)

Current Status of Repository

In the NPWG call at April 18, we decide that this repository is archived. But this does NOT means Kubernetes service for secondary interfaces is impossible. Here is the reason why we decide to close.

  • Insufficient use-cases and feedback

Secondary network is used varous scenarios, such as to connect isolated network (i.e. closed network), to connect high-speed network and so on. Hence multus-service also needs to apply such various use-cases and we need to gather the use-cases and requirements not only from users also from vendors. We have insufficient use-cases and feedback in NPWG meeting hence we cannot disucss how user want to use the service for secondary network. Kubernetes service functionality is not a single functionality, composition of various functions (i.e. NodePort, headless service, load-balancer and so on), so use-cases and feedback were pretty important.

  • Kubernetes community want to use Gateway API, instead of endpoint/endpointslices API

Tim Hockin's LT at KubeCon 2023 NA mentions that Kubernetes Gateway API could be replaced with Kubernetes Service API. This repository uses service API, hence this repository is not aligned with current Kubernetes architecture based on Tim Hockin's presentation. So if we need to implement it, Gateway API should be used to align Kubernetes architecture. It should be implemented from scratch, not from this repository.

  • Several community, including Kubernetes community itself, started the discussion about secondary network service

Currently, Kubernetes sig-network launches Multi-network WG and discusses about multiple network interfaces in Kubernetes Pod, including Service and other Kubernetes functionalities (e.g. NetworkPolicy). So I expects that this working group will provide the design and API for Kubernetes service for secondary network interfaces, not this repository. So if there is someone who really wants this feature, I strongly recommend to join this multi-network WG and provide your use-case scenarios.

Here are the reasons. So this repository archives is not end of development, just restart the design discussion with use-cases in another working group. Please join the community and discuss about your use-cases in the community if you want the feature.


Description

This repository contains various components which provides service abstraction, which similar to Kubernetes services, for Multus network attachment definitions.

Supported Feature

Currently these compoents supports following functionalities:

  • Cluster IP
  • Load-balancing Cluster IP among the service Pods with iptables

Other service related features is to be discussed in Kubernetes Network Plumbing WG. Some of them might be supported in the future but this does not guarantee that all Kubernetes service features are going to be supported.

Limitation

As noted above section, we do not support everything except above yet. We need to discuss how to implement and how to support it. Please keep in mind that these feature should be discussed but it may be concluded NOT to support (due to multus network design perspective or some other reason).

Example (not support it yet):

  • Load balancer
  • Expose multus service to outside cluster
  • kubectl port-forward svc command
  • Headless service (see #22 for the detail)

Requirements

TBD (verified with kubeadm k8s and cri-o as container runtime for now) Note: docker for container runtime is not supported as latest Kubernetes does.

Container Images

Available in Packages. Currently amd64 only.

How to Deploy

Sample deployment is in following:

TODO

TBD

Directories

Path Synopsis
cmd
multus-proxy
This is a 'multus-proxy'.
This is a 'multus-proxy'.
multus-service-controller
This is 'multus-service-controller', which creates endpointslice for multus service, from multus interface output and service object.
This is 'multus-service-controller', which creates endpointslice for multus service, from multus interface output and service object.
pkg
proxy/controllers
Package controllers provides controller code for multus-proxy.
Package controllers provides controller code for multus-proxy.
proxy/server
Package server provides server function for multus-proxy.
Package server provides server function for multus-proxy.
proxy/utils
Package utils provides utility function for multus-proxy
Package utils provides utility function for multus-proxy
service-controller
Package endpointslice proides multus-service-controller functions for endpointslice.
Package endpointslice proides multus-service-controller functions for endpointslice.
service-controller/metrics
Package metrics provides metrics for multus-service-controller.
Package metrics provides metrics for multus-service-controller.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL