指定ECS和ECI的资源分配 5、调度失败再次自动调度到虚拟节点示例 步骤一:在安装cubevkprofile插件时,添加环境变量VNODEAUTOSCALER"true",不添加环境变量默认为开启,关闭需修改VNODEAUTOSCALER"false"。例如使用helm安装插件时,修改values.yaml: plaintext ... vnodeAutoScaler: "true" .. 步骤二:确认节点资源使用情况。 当真实节点计算资源不足时,cubevkprofile才会将创建失败的Pod自动调度到虚拟节点上。验证pod调度失败再次自动调度到虚拟节点的效果前,可以先确认节点资源使用情况。假设采用的示例环境如下: 真实节点:1台ECS,名称为master(4 vCPU 8 GiB内存),已部署1个deployment,CPU请求接近100%。 虚拟节点:1个,名称为vnd0002,未部署工作负载。 步骤三:部署deployment。 准备YAML文件,deploymentautoscaler.yaml的内容示例如下,配置副本数(replicas)为2,每个副本的容器声明了4 vCPU 8 GiB的计算资源: plaintext apiVersion: apps/v1 kind: Deployment metadata: name: nginxdeploymentautoscaler labels: app: nginxautoscaler spec: replicas: 2 selector: matchLabels: app: nginxautoscaler template: metadata: labels: app: nginxautoscaler spec: containers: name: nginx image: lengbuleng/nginx:1.14.2 ports: containerPort: 80 resources: requests: cpu: 4 memory: 8G 创建deployment: plaintext kubectl create f deploymentautoscaler.yaml 步骤四:确认Pod调度情况。 查看Pod运行情况: plaintext kubectl get pods o wide 返回示例如下,可以看到步骤三创建的Pod均运行在虚拟节点上: plaintext $ kubectl get pod o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginxdeploymentautoscaler7cf75fcc46pss4s 0/1 ProviderFailed 0 19s vnd0002 nginxdeploymentautoscaler7cf75fcc46vhj9k 0/1 ProviderFailed 0 19s vnd0002 查看Pod的事件信息,查看名为nginxdeploymentautoscaler7cf75fcc46pss4s的Pod的信息: plaintext kubectl describe pod nginxdeploymentautoscaler7cf75fcc46pss4s 返回示例如下,在Events中可以看到由于真实节点计算资源不足,kubescheduler通过cubevkprofile把Pod调度到了虚拟节点上: plaintext Events: Type Reason Age From Message Warning FailedScheduling 2m40s defaultscheduler 0/3 nodes are available: 1 Insufficient cpu, 1 Insufficient memory, 2 node(s) had untolerated taint {virtualkubelet.io/provider: cubeeci}. preemption: 0/3 nodes are available: 1 No preemption victims found for incoming pod, 2 Preemption is not helpful for scheduling.. Normal Scheduled 2m39s defaultscheduler Successfully assigned default/nginxdeploymentautoscaler7cf75fcc46pss4s to vnd0002 Warning ProviderCreateFailed 2m29s vnd0002/podcontroller Post " context deadline exceeded (Client.Timeout exceeded while awaiting headers) Normal ProviderCreateSuccess 2m20s vnd0002/podcontroller Create pod in provider successfully