ETSI NFV-SOL CNF Scaling¶
This document describes how to scale CNF in Tacker v2 API.
Note
The content of this document has been confirmed to work using the following VNF Package.
Overview¶
The diagram below shows an overview of the CNF scaling.
Request scale VNF
A user requests tacker-server to scale a VNF or all VNFs with tacker-client by requesting
scale VNF
.Call Kubernetes API
Upon receiving a request from tacker-client, tacker-server redirects it to tacker-conductor. In tacker-conductor, the request is redirected again to an appropriate infra-driver (in this case Kubernetes infra-driver) according to the contents of the instantiate parameters. Then, Kubernetes infra-driver calls Kubernetes APIs.
Change the number of Pods
Kubernetes Master change the number of Pods according to the API calls.
Prerequisites¶
The following packages should be installed:
tacker
python-tackerclient
Execute up to “Instantiate VNF” in the procedure of ETSI NFV-SOL CNF (Containerized VNF) Deployment. In other words, the procedure after “Terminate VNF” is not executed.
CNF Scaling Procedure¶
As mentioned in Prerequisites, the VNF must be instantiated before performing scaling. Users can scale the number of pod replicas managed by controller resources such as Kubernetes Deployment, StatefulSet, and ReplicaSet.
Note
If kind is Stateful Set and not dynamic provisioning (no-provisioner), user must create the Persistent Volume for the maximum replicas in advance because the increased Persistent Volume is not created during the scale out operation.
Details of CLI commands are described in VNF Lifecycle Management with v2 Tacker.
There are two main methods for CNF scaling.
Scale out CNF
Scale in CNF
How to Identify ASPECT_ID¶
In order to execute scaling, it is necessary to specify ASPECT_ID
, which is
the ID for the target scaling group.
First, the method of specifying the ID will be described.
ASPECT_ID
is described in VNFD included in the VNF Package.
In the following VNFD excerpt, vdu1_aspect corresponds to ASPECT_ID
.
node_templates:
VNF:
type: company.provider.VNF
properties:
flavour_description: A simple flavour
VDU1:
type: tosca.nodes.nfv.Vdu.Compute
properties:
name: vdu1
description: VDU1 compute node
vdu_profile:
min_number_of_instances: 1
max_number_of_instances: 3
policies:
- scaling_aspects:
type: tosca.policies.nfv.ScalingAspects
properties:
aspects:
vdu1_aspect:
name: vdu1_aspect
description: vdu1 scaling aspect
max_scale_level: 2
step_deltas:
- delta_1
- VDU1_initial_delta:
type: tosca.policies.nfv.VduInitialDelta
properties:
initial_delta:
number_of_instances: 2
targets: [ VDU1 ]
- VDU1_scaling_aspect_deltas:
type: tosca.policies.nfv.VduScalingAspectDeltas
properties:
aspect: vdu1_aspect
deltas:
delta_1:
number_of_instances: 1
targets: [ VDU1 ]
- instantiation_levels:
type: tosca.policies.nfv.InstantiationLevels
properties:
levels:
instantiation_level_1:
description: Smallest size
scale_info:
vdu1_aspect:
scale_level: 1
instantiation_level_2:
description: Largest size
scale_info:
vdu1_aspect:
scale_level: 2
default_level: instantiation_level_1
- VDU1_instantiation_levels:
type: tosca.policies.nfv.VduInstantiationLevels
properties:
levels:
instantiation_level_1:
number_of_instances: 2
instantiation_level_2:
number_of_instances: 3
targets: [ VDU1 ]
Note
See NFV-SOL001 v2.6.1 annex A.6 for details about ASPECT_ID
.
How to Scale Out CNF¶
Execute Scale CLI command and check the number of replicas before and after scaling. This is to confirm that the number of replicas has increased after Scale-out. An example using deployment is described.
Replicas information before scale-out:
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 2/2 2 2 7h4m
Scale-out CNF can be executed by the following CLI command.
$ openstack vnflcm scale --type SCALE_OUT --aspect-id ASPECT_ID \
VNF_INSTANCE_ID --os-tacker-api-version 2
Result:
Scale request for VNF Instance 431b94b5-d7ba-4d1c-aa26-ecec65d7ee53 has been accepted.
Replicas information after scale-out:
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 3/3 3 3 7h8m
How to Scale in CNF¶
Execute Scale CLI command and check the number of replicas before and after scaling. This is to confirm that the number of replicas has increased after Scale-in. An example using deployment is described.
Replicas information before scale-out:
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 3/3 3 3 7h8m
Scale-in VNF can be executed by the following CLI command.
$ openstack vnflcm scale --type SCALE_IN --aspect-id ASPECT_ID \
VNF_INSTANCE_ID --os-tacker-api-version 2
Result:
Scale request for VNF Instance 431b94b5-d7ba-4d1c-aa26-ecec65d7ee53 has been accepted.
Replicas information after scale-in:
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 2/2 2 2 7h12m