本文介绍当Kubernetes集群中真实节点计算资源不足时,如何通过virtual-kubelet-autoscaler插件将Pod创建调度到虚拟节点,让您的业务享受到极致弹性的体验。
背景信息
virtual-kubelet-autoscaler插件将Pod创建调度到虚拟节点如下图所示。
前提条件
您已经创建了集群。具体操作,请参见创建Kubernetes集群。
操作步骤
1. 登录阿里云容器服务控制台查看您的集群。
3. 安装virtual-kubelet-autoscaler插件。
a. 选择市场>应用目录,在右上角搜索virtual-kubelet-autoscaler,单击ack-virtual- kubelet-autoscaler图标。
b. 选择您要安装的集群,单击创建。
4. 您可以在集群中执行以下命令确认 ack-virtual-kubelet-autoscaler 运行状况。
kubectl get deploy -n kube-system
查看真实节点资源使用状况
登录 容器服务 Kubernetes 控制台 查看您的集群节点,可以看到下图有两台ECS做为真实节点,ECS的规格是ecs.c5.large(2 vCPU 4 GiB),规格详细信息请参见计算型实例规格族c5。此时虚拟节点(virtual-kubelet)未分配容器组(Pod)。
部署deployment
准备好您的yaml文件,以下面deployment-autoscaler.yaml文件为例,配置副本数(replicas)为10,每个副本的容器申明了2 vCPU 4 GiB的计算资源。
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 控制台 选择无状态>使用模板创建。
确认Pod调度情况
您可以通过以下命令确认Pod运行状况。
kubectl get pods
您也可以通过以下命令查询单个Pod的事件信息。
kubectl describe pod nginx-deployment-autoscaler-786876b6b-5qtw4
可以看到由于真实节点上计算资源不足,kube-scheduler通过virtual-kubelet-autoscaler把Pod创建二次调度到了虚拟节点上。
此时在控制台上查询集群的节点信息,可以看到虚拟节点上已经分配了10个容器组(Pod)。