使用以下方法尝试耗尽AKS K8s群集上的节点时:
kubectl drain ${node_name} --ignore-daemonsets
我收到以下错误:
"The Node \"aks-agentpool-xxxxx-0\" is invalid: []: Forbidden: node updates may only change labels, taints, or capacity (or configSource, if the DynamicKubeletConfig feature gate is enabled)"
在AKS节点上是否需要做一些额外的工作以允许排空?
(上下文:这是自动化脚本的一部分,我正在编写该脚本以耗尽kubernetes节点以进行维护操作而不会造成停机,因此,耗尽绝对是此处的先决条件)
其他故障排除说明:
该命令通过Ansible的“ shell”模块运行,但是当该命令直接在BASH中运行时,它可以正常工作。
此外,ansible正在通过Jenkins管道运行。调试语句似乎显示:
答案 0 :(得分:1)
该命令正在通过Ansible的“ shell”模块运行,但是当 命令直接在BASH中运行,效果很好。
此外,ansible正在通过Jenkins管道运行。
您最好添加此信息,因为它完全改变了我们应该从哪个角度审视您遇到的问题。
出于调试目的,而不是运行命令,请尝试运行:
kubectl auth can-i drain node --all-namespaces
直接在bash shell
中以及通过 Ansible的 shell module
如果这不是许可问题,它至少应该给您答案。
在这种情况下,您可以用来调试的其他命令是:
ls -l .kube/config
cat .kube/config
whoami
最后一个,以确保 Ansible 使用相同的user
。如果您已经知道它使用了不同的user
,请尝试使用与您在 bash shell 中运行脚本时所用的脚本user
相同的脚本。
一旦选中此复选框,我们就可以继续调试过程。