ETSI NFV-SOL CNF 伸缩¶
本文档描述了在 Tacker v2 API 中如何伸缩 CNF。
概述¶
下图显示了 CNF 伸缩的概述。
请求伸缩 VNF
用户通过请求
scale VNF使用 tacker-client,向 tacker-server 请求伸缩 VNF 或所有 VNF。调用 Kubernetes API
收到 tacker-client 的请求后,tacker-server 会将其重定向到 tacker-conductor。在 tacker-conductor 中,请求会再次根据实例化参数的内容重定向到适当的基础设施驱动程序(在本例中为 Kubernetes 基础设施驱动程序)。然后,Kubernetes 基础设施驱动程序调用 Kubernetes API。
更改 Pod 的数量
Kubernetes Master 根据 API 调用更改 Pod 的数量。
先决条件¶
应安装以下软件包
tacker
python-tackerclient
执行 ETSI NFV-SOL CNF(容器化 VNF)部署 中的步骤,直到“实例化 VNF”。换句话说,不执行“终止 VNF”之后的步骤。
CNF 伸缩流程¶
如前提条件中所述,在执行伸缩之前必须实例化 VNF。用户可以伸缩由控制器资源(如 Kubernetes Deployment、StatefulSet 和 ReplicaSet)管理的 pod 副本数。
注意
如果类型是 Stateful Set 且没有动态配置(no-provisioner),用户必须提前为最大副本数创建持久卷,因为在伸缩操作期间不会创建增加的持久卷。
CLI 命令的详细信息在 v2 Tacker 的 VNF 生命周期管理 中描述。
CNF 伸缩主要有两种方法。
CNF 扩容
CNF 缩容
如何识别 ASPECT_ID¶
为了执行伸缩,需要指定 ASPECT_ID,这是目标伸缩组的 ID。首先,将描述指定 ID 的方法。
ASPECT_ID 在 VNF 包中包含的 VNFD 中描述。在以下 VNFD 摘录中,vdu1_aspect 对应于 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 ]
注意
有关 ASPECT_ID 的详细信息,请参阅 NFV-SOL001 v2.6.1 附录 A.6。
如何扩容 CNF¶
执行 Scale CLI 命令并检查伸缩前后的副本数。这是为了确认在扩容后副本数已增加。这里描述了一个使用部署的示例。
扩容前副本信息
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 2/2 2 2 7h4m
可以通过以下 CLI 命令执行 CNF 扩容。
$ openstack vnflcm scale --type SCALE_OUT --aspect-id ASPECT_ID \
VNF_INSTANCE_ID --os-tacker-api-version 2
结果
Scale request for VNF Instance 431b94b5-d7ba-4d1c-aa26-ecec65d7ee53 has been accepted.
扩容后副本信息
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 3/3 3 3 7h8m
如何缩容 CNF¶
执行 Scale CLI 命令并检查伸缩前后的副本数。这是为了确认在缩容后副本数已减少。这里描述了一个使用部署的示例。
扩容前副本信息
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 3/3 3 3 7h8m
可以通过以下 CLI 命令缩减 VNF。
$ openstack vnflcm scale --type SCALE_IN --aspect-id ASPECT_ID \
VNF_INSTANCE_ID --os-tacker-api-version 2
结果
Scale request for VNF Instance 431b94b5-d7ba-4d1c-aa26-ecec65d7ee53 has been accepted.
缩容后副本信息
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
vdu1 2/2 2 2 7h12m