Adding Kubernetes feature to OSM for deployment of docker container based Network Services
Adding Kubernetes feature to OSM for deployment of docker container based Network Services
Proposer
Prabhunath G (Tata Elxsi)
Type
Feature (do not modify)
Target MDG/TF
IM, LCM, RO, MongoDB, RO-DB
Supported VIMs
Currently tested independently with OpenStack.
Description
Kubernetes or K8s feature in OSM supports to deploy docker container based Network Service. This feature addition subscribes to the architecture principles of OSM to be
-
Modular K8s exists as a separate entity independent of OSM components which will driven by K8 plugin triggered by RO
-
Layering by providing suitable abstraction A feature is augmented to RO module which will deal with processing of input from LCM to deploy suitable infrastructure using K8s and other VIMs (like OpenStack)
-
Simplicity: The entire design of augmenting K8s feature becomes simple with the micro service architecture in place and with no tight dependency between OSM components and K8s infrastructure which ensures addition of new docker container orchestrator in future without any hassles.
Installation: K8s engine is installed on a separate VM which is communicated through REST APIs from the kube plugin which is part of RO.
UseCase 1: Deploying Network Service where VDUs are represented by pods(which contains containers) VDUs are represented as pods in the YANG Data Model among other information related to Network Service. Once this input is given to the RO, RO-plugin for Openstack will create a node or a VM which will launch a image with in-built K8s services. Through cloud-init scripts this node shall be joined to the cluster of K8s, henceforth identified as slave for K8s master. Once this is accomplished, RO will now trigger Kube-plugin to instantiate pods.
UseCase 2: Autoscaling of Network Service (Horizontal Scaling) This design is capable of doing horizontal scaling where once a configured load is exceeded on a particular slave node, then K8s will automatically augment an identical pod in a new slave node which would be already created during creation of first slave node. Then, the Kube-plugin will receive an event of augmentation and further prods RO to trigger to create a new slave through RO-plugin of Openstack, to be readily available for further scaling.
Demo or definition of done
Reference demo that leverages this, or alternatively, definition of done.
- Both the Usecase 1 and Usecase 2 are successfully implemented and valiadated independently.
Future Work
Need to integrate this feature into OSM.