如何修改Azure Kubernetes Services节点池大小
今天和大家聊聊Azure Kubernetes Services(AKS)修改节点池VM Size的问题。这也是很多客户在使用AKS的过程中都会遇到的一个问题。随着AKS群集使用时间的增长,很多客户都会面临扩展或修改AKS节点池VM Size的问题,具体的原因大致如下:
- 性能优化:增加节点池中的节点大小可以提高 AKS 集群中运行的应用程序的性能。如果注意到计算资源不足导致资源限制或性能问题,这一点尤其重要
- 成本优化:通过减少虚拟机大小或节点数量来缩小节点池规模有助于优化成本,特别是在集群始终未充分利用或资源需求减少的情况下
- 应用程序扩展:随着应用程序工作负载的增长,可能需要通过添加更大的虚拟机或其他节点来扩展 AKS 集群,以满足增加的需求并保持性能水平。
- 资源要求:如果应用程序的资源要求发生变化,则可能需要更改节点池大小
- 工作负载变化:如果应用程序遇到工作负载波动,可能需要考虑使用 Kubernetes Horizontal Pod Autoscaler (HPA) 或 Azure Kubernetes Service (AKS) Cluster Autoscaler 等工具自动调整节点池的大小。这些工具根据工作负载需求自动调整节点数量,确保最佳资源分配
但其实截至到目前为止,AKS是不支持在不重建整个群集或节点池的情况下,更改默认节点池或附加节点池大小的。所以,如果我们想要修改AKS群集节点VM Size的话,可以通过添加新的系统节点池的方式进行操作。
先决条件
- 具有管理 AKS 群集的适当权限访问 Azure 门户
- Kubectl 工具安装在本地计算机上并可以访问 AKS 集群
- Azure CLI 安装在本地计算机上
- 熟悉 AKS 概念和基本命令行操作
修改方式
首先,我们通过Azure Portal来查看当前AKS群集节点的大小,可以看到,当前的群集节点是D2s_v2大小:
然后我们可以使用如下CLI命令来添加一个系统节点池:
az aks nodepool add --resource-group WorkClient --cluster-name ***-AKS --name nodepool00 --node-count 1 --node-vm-size Standard_DS3_v2 --mode System --no-wait
这里需要注意的是,每个AKS群集只要要有一个包含系统节点的节点池,在我们上面的参数中,--mode参数设置为System,就是将新的节点池设置为系统节点池。因为假设群集只有一个节点池的情况下,我们就需要有一个系统节点池来替换它
如果大家想要使用GUI界面进行添加的话,可以通过如下界面来添加新的节点池:
节点池添加好以后,我们可以看到,新添加的节点池vm Size为DS3_v2:
接下来我们需要对现有的AKS节点池进行封锁。Cordoning 是一个将特定节点指定为不可调度的过程,有效防止任何其他 Pod 被调度到这些节点上
首先,我们需要使用kubectl get node命令获取想要封锁的节点名称,具体如下:
可以看到,当前我们有两个节点池,接下来可以使用kubectl cordon <node-names>来对指定节点进行封锁:
执行好以后,再次使用kubectl get node,可以看到节点已经封锁:
节点封锁以后,我们就需要对现有的节点池进行排空。可以使用kubectl rain命令来进行操作。这个动作会在节点耗尽时,它会导致在其他可调度节点上的这些节点上运行的 pod 被驱逐和重新创建。具体命令如下:
kubectl drain aks-lab01-16323815-vmss000002 --ignore-daemonsets --delete-emptydir-data –force
排空操作完成后,除守护进程集控制的 Pod 之外的所有 Pod 都将在新节点池上运行
接下来,我们就可以在Azure中选中对应的节点池,然后点击删除进行删除原有的节点池啦:
删除以后,我们的节点池VM Size就替换完成喽
标签:Kubernetes,AKS,VM,群集,--,Services,Azure,节点,Size From: https://blog.51cto.com/wuyvzhang/9471689