LoadBalancer类型K8s service创建(可选)
当前在部署kubeinfer实例时我们默认创建了NodePort类型的K8s service,这是K8s最简单、最基础的一种service,通常我们建议仅用于功能联调时访问推理服务使用,如果您需要有更好的负载均衡能力,我们建议创建LoadBalancer类型的service。
注意:创建LoadBalancer类型的K8s service依赖于您的K8s所在的云平台,如果您是直接用开源K8s搭建的,可能无法直接使用云厂商提供的LB服务。
基于华为云CCE上创建LoadBalancer类型K8s service的步骤如下:
- 购买独享型ELB,并获取购买好的ELB的ID。
- 准备好lb_service.yaml用于创建service,参考样例如下:
apiVersion: v1 kind: Service metadata: name: svc-infer-vllm-2p1d annotations: kubernetes.io/elb.id: ${your_elb_id} # ELB ID,替换为实际值 kubernetes.io/elb.class: performance # 负载均衡器类型 kubernetes.io/elb.lb-algorithm: ROUND_ROBIN # 负载均衡器算法 spec: selector: app.modelarts.huaweicloud/role: role-0 app.model: deepseek-r1 # 创建实例时添加的自定义label,替换为实际值 ports: - protocol: TCP port: 9000 targetPort: 9000 type: LoadBalancer
- 自定义label需要在生成部署推理服务yaml时添加,需要替换为实际值,参考表1,样例如下:
python3 gen_pd_deploy_kubeinfer_yaml.py \ --custom-labels="{\"app.model\": \"deepseek-r1\"}" \ ...
- 部署ELB适配的服务,用户调用请求需要访问EXTERNAL-IP。
- 自定义label需要在生成部署推理服务yaml时添加,需要替换为实际值,参考表1,样例如下:
- 执行如下命令创建K8s service
kubectl apply -f lb_service.yaml