我手动删除了我的Kubernetes集群的两个节点,首先调用"kubectl排水管";然后";kubectl删除";每个。虽然集群似乎工作没有问题,但Azure UI向我显示的节点比我使用";kubectl获取节点";。因此,当我将Kubernetes配置为在Azure UI中有9个节点时,如果我使用kubectl,只有7个节点。向上或向下扩展并不能解决问题,因为Azure总是被两个节点关闭。我该如何解决这个问题?有没有一种方法可以通知Azure节点已被删除?
如果你想解决这个问题,你需要对k8s集群有更深入的了解。
当您使用命令kubectl delete
从代理池中删除节点时,这意味着代理池将无法控制该节点。但这并不意味着你真的删除了这台机器。因此,您可以在Azure门户中发现机器的编号没有更改。这就是你发现的真相。
如何解决此问题?有没有办法通知Azure节点已被删除?
这里有两个问题。首先,你可以用这种方式表达:
如何将之前删除的节点恢复到代理池?
解决起来很简单。您只需要重新启动该节点中的kubelet
服务。例如,您使用VMSS作为AKS的代理池,并且该节点实例id为4。然后你可以这样做:
az vmss run-command invoke --resource-group group_name --name vmss_name --instance-id 4 --command-id RunShellScript --scripts "service kubelet restart"
对于第二个,您只能使用Azure命令让Azure知道更新。这里的意思是,您可以扩展代理池,例如,使用Azure CLI命令:
az aks nodepool --resource-group group_name --name agentpool_name --cluster-name cluster_name --node-count 2