开发者社区> 问答> 正文

如何通过 virtual-kubelet-autoscaler 将Pod自动调度到虚拟节点?

如何通过 virtual-kubelet-autoscaler 将Pod自动调度到虚拟节点?

展开
收起
小天使爱美 2020-03-20 19:16:08 1045 0
1 条回答
写回答
取消 提交回答
  • 简介 本文主要介绍当 Kubernetes 集群中真实节点计算资源不足时,如何通过 virtual-kubelet-autoscaler 插件将Pod创建调度到虚拟节点,让您的业务享受到极致弹性的体验。asc1

    前置准备 登录阿里云 容器服务 Kubernetes 控制台 查看您的集群。如果您还没有集群,参考 创建 Kubernetes 集群 安装 ack-virtual-node 插件 安装 virtual-kubelet-autoscaler 插件 选择 『市场』->『应用目录』,在右上角搜索 『virtual-kubelet-autoscaler』,点击 『ack-virtual- kubelet-autoscaler』图标 asc2 选择您要安装的集群,点击 『创建』 asc3

    您可以在集群中执行以下命令确认 ack-virtual-kubelet-autoscaler 运行状况

    kubectl get deploy -n kube-system asc4

    示例 查看真实节点资源使用状况 登录 容器服务 Kubernetes 控制台 查看您的集群节点,可以看到下图有两台ECS做为真实节点,ECS的规格是 ecs.c5.large(2vCPU 4GiB),规格详细信息请参考 选择实例规格。此时虚拟节点(virtual-kubelet)未分配容器组(Pod)asc5

    部署deployment 准备好您的yaml文件,以下面deployment-autoscaler.yaml文件为例,配置副本数(replicas)为10、每个副本的容器申明了 2vCPU 4GiB的计算资源

    apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment-autoscaler labels: app: nginx spec: replicas: 10 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:alpine ports: - containerPort: 80 resources: requests: cpu: 2 memory: 4Gi 您可以在集群中执行以下命令进行创建

    kubectl create -f deployment-autoscaler.yaml 您也可以在 容器服务 Kubernetes 控制台 选择 『无状态』—> 『使用模板创建』创建asc6asc7

    确认Pod调度情况 您可以通过以下命令确认Pod运行状况

    kubectl get pods -o wide asc8

    您也可以通过以下命令查询单个Pod的事件信息

    kubectl describe pod nginx-deployment-autoscaler-786876b6b-5qtw4 asc9可以看到由于真实节点上计算资源不足,kube-scheduler 通过 virtual-kubelet-autoscaler 把Pod创建二次调度到了虚拟节点上。

    此时在控制台上查询集群的节点信息,可以看到虚拟节点上已经分配了10个容器组(Pod)asc10

    2020-03-20 19:16:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
如何让k8s集群30s扩容3000个Pod 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载