From 5b0faa59c82e0967a8edade563282a5dfce333ad Mon Sep 17 00:00:00 2001 From: Haibin Huang Date: Thu, 7 Nov 2019 10:43:33 +0800 Subject: Crreate Register Module in k8s plugin Issue-ID: MULTICLOUD-740 Signed-off-by: Haibin Huang Change-Id: I1f7eb11af787fbe680afd1bcf267f378476d8981 --- docs/specs/multicloud4k8s-hpa-discovery.rst | 211 ++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 docs/specs/multicloud4k8s-hpa-discovery.rst (limited to 'docs/specs') diff --git a/docs/specs/multicloud4k8s-hpa-discovery.rst b/docs/specs/multicloud4k8s-hpa-discovery.rst new file mode 100644 index 0000000..4d90a8c --- /dev/null +++ b/docs/specs/multicloud4k8s-hpa-discovery.rst @@ -0,0 +1,211 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) 2019 Intel, Inc. + +================================================= +MultiCloud for k8s HPA Discovery And Registration +================================================= +Discover HPA capability and register it to A&AI + +Problem Description +=================== + +Kubernetes clusters using ONAP Multicloud K8s Plugin Project for R4/R5 do not report hardware +features to A&AI. Consequently during the CNF/VNF life cycle CNFs/VNFs that require or recommend +specific hardware during instantiation cannot dynamically reach the correct cluster and node that +provides the needed hardware capabilities. + + +Propose Change +============== + +Cluster Registration FLOW +------------------------- +#. Cluster is deployed. +#. K8s registration agent is deployed on cluster. +#. K8s registration agent gathers features and cluster info. +#. K8s registration agent registers with K8s scheduler with labels identifying it's capabilities. +#. K8s Scheduler hook gives HPA Placement Plugin hardware features. +#. HPA Placement Plugins stores features in mongoDB. + +AAI Registration +---------------- +#. CLI registers cluster with K8s plugin. +#. Registration asks HPA Placement for cluster features. +#. HPA Placement gets cluster features from mongoDB. +#. HPA Placement plugin returns map of nodes/features to registration. +#. Registration module munges features into tenant/flavors updates AAI. + +Converting node feature label to flavor properties +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Node feature label:: + + feature.node.kubernetes.io/network-sriov.capable=True + feature.node.kubernetes.io/network-sriov.configured=True + feature.node.kubernetes.io/pci-1200_8086.present=True + +Comments: The other parameter we can set default because node feature label can not provide. + + +Flavor properties:: + + +-----------------------------------------------------+-------------+ + | Field | Value | + +-----------------------------------------------------+-------------+ + | OS-FLV-DISABLED:disabled | False | + | OS-FLV-DISABLED:ephemeral | 0 | + | feature.node.kubernetes.io/network-sriov.capable | True | + | feature.node.kubernetes.io/network-sriov.configured | True | + | feature.node.kubernetes.io/pci-1200_8086.present | True | + | disk | 1 | + | id | 1 | + | name | k8s_sriov_1 | + | ram | 512 | + | vcpus | 1 | + +-----------------------------------------------------+-------------+ + +Add API for K8s Plugin +^^^^^^^^^^^^^^^^^^^^^^ +API V0 URL: POST http://{{MSB_IP}}:{{MSB_PORT}}/api/v0/multicloud-k8s/{{cloud-owner}}_{{cloud-region-id}}/registry +API V1 URL: POST http://{{MSB_IP}}:{{MSB_PORT}}/api/v1/multicloud-k8s/{{cloud-owner}}/{{cloud-region-id}}/registry + +Request Body: +>>>>>>>>>>>>> +:: + + { + } + +Response: +>>>>>>>>> + +Response Codes +:::::::::::::: +Success +....... + ++--------------------+----------------------------------------------------------------------+ +| Code | Reason | ++====================+======================================================================+ +| 202 - ACCEPTED | Discover HPA and successfully register it | ++--------------------+----------------------------------------------------------------------+ + +Error +..... + ++----------------------------+--------------------------------------------------------------+ +| Code | Reason | ++============================+==============================================================+ +| 500 - INTERAL_SERVER_ERROR | Some content in the request was invalid. | ++----------------------------+--------------------------------------------------------------+ + + +Response Body +::::::::::::: +:: + + { + } + +API V0 URL: GET http://{{MSB_IP}}:{{MSB_PORT}}/api/v0/multicloud-k8s/{{cloud-owner}}_{{cloud-region-id}}/registry +API V1 URL: GET http://{{MSB_IP}}:{{MSB_PORT}}/api/v1/multicloud-k8s/{{cloud-owner}}/{{cloud-region-id}}/registry + +Request Body: +>>>>>>>>>>>>> +:: + + { + } + +Response: +>>>>>>>>> + +Response Codes +:::::::::::::: +Success +....... + ++--------------------+----------------------------------------------------------------------+ +| Code | Reason | ++====================+======================================================================+ +| 202 - ACCEPTED | Discover HPA and successfully register it | ++--------------------+----------------------------------------------------------------------+ + +Error +..... + ++----------------------------+--------------------------------------------------------------+ +| Code | Reason | ++============================+==============================================================+ +| 500 - INTERAL_SERVER_ERROR | Some content in the request was invalid. | ++----------------------------+--------------------------------------------------------------+ + + +Response Body +::::::::::::: +:: + + { + } + + +API V0 URL: DELETE http://{{MSB_IP}}:{{MSB_PORT}}/api/v0/multicloud-k8s/{{cloud-owner}}_{{cloud-region-id}}/registry +API V1 URL: DELETE http://{{MSB_IP}}:{{MSB_PORT}}/api/v1/multicloud-k8s/{{cloud-owner}}/{{cloud-region-id}}/registry + +Request Body: +>>>>>>>>>>>>> +:: + + { + } + +Response: +>>>>>>>>> + +Response Codes +:::::::::::::: +Success +....... + ++--------------------+----------------------------------------------------------------------+ +| Code | Reason | ++====================+======================================================================+ +| 204 - NO_CONTENT | Successfully delete HPA information from AAI | ++--------------------+----------------------------------------------------------------------+ + +Error +..... + ++----------------------------+--------------------------------------------------------------+ +| Code | Reason | ++============================+==============================================================+ +| 500 - INTERAL_SERVER_ERROR | Some content in the request was invalid. | ++----------------------------+--------------------------------------------------------------+ + + +Response Body +::::::::::::: +:: + + { + } + +Work Items +========== + +#. Work with CLI. +#. Work with AAI. +#. Expose API by broker and k8s plugin. + +Tests +===== + +#. Unit Tests with tox +#. Pairwise test with AAI project. +#. Integration test with vFW HPA test. +#. CSIT Tests, the input/ouput of broker and k8s plugin see API design above. + +Reference +========= +https://wiki.onap.org/display/DW/Extending+HPA+for+K8S -- cgit 1.2.3-korg