我使用Azure门户将AKS从1.23.5升级到1.24.9。基于Azure门户上的以下状态,此部分正确完成(或我假设的)。x1c 0d1x
我继续从1.24.9到1.25.5。这次它部分工作了。Azure门户显示节点池为1.25.5,供应状态为“失败”。而节点仍然处于1.24.9。
我发现一些节点在连接网络时出现问题,包括外部(如Github)和内部“服务”。由于某种原因,这是一个间歇性问题。在同一个节点上,它有时工作,有时不工作。(我在每个节点上运行python的pod。)
每个节点在resolv.conf
中都有群集IP
SO上的一个问题有ingress-nginx
兼容性的提示,我发现我有一个不兼容的版本,所以我升级到1.6.4 which is compatible with 1.24 and 1.25 both
但此网络问题仍然存在。我不确定这是否是因为AKS设置状态为“失败”。Azure门户中此群集的连接检查为“成功”。Azure门户诊断中报告的唯一问题是节点池设置状态。
在ingress-nginx
升级后,我需要为所有节点/pod执行什么操作才能获得新配置?或者有没有重新触发此升级的方法?虽然我不确定原因,但只是假设它可以重置所有节点上的配置,并且可能会工作。
1条答案
按热度按时间hs1ihplo1#
好的,在这里发布解决方案和旅程,以防万一有人遇到类似的问题。
升级后群集中出现网络问题。这是所有Pod都出现DNS问题的原因。由于这些网络问题,度量-服务器未处于运行状态,其PDB允许中断保持为0,并且在升级节点时导致
PodDrainFaulure
错误。我可以通过运行命令
az aks nodepool upgrade -n agentpool -g rg_name --cluster-name aks_name --node-image-only
强制升级,将所有节点升级到1.25.5,但是,在执行此命令之后,我必须继续使用deleting the pdb来升级所有节点。这有助于使控制平面和所有节点达到1.25.5版本,但总体状态仍处于失败(正在运行)状态。通过使用--cluster-plane-only标记触发另一次升级解决了此问题
然而,这并没有解决核心网络问题,因为从指标服务器到应用程序pod,所有尝试解析主机名的操作都失败了。有趣的是,内部服务根本无法访问,但外部网络(例如github.com、microsoft.com等)会间歇性地工作。
基于AKS issue 2903和相关ingress-nginx issue 8501,发现在k8s 1.24之后,ingress-nginx需要特殊注解以保持健康探测器正常运行。必须使用以下命令更新helm
这确实使Azure aks运行状况 Jmeter 板和指标服务器显示为运行状态,但没有解决底层网络问题。使用MS troubleshooting guide for outbound connections所有部分中提到的所有场景和命令缩小了
kube-dns
服务和CoreDNS pod的问题范围。因为如果将名称服务器直接上行到coreDNS pod IP(需要在同一节点上运行)或公共DNS,DNS解析将工作,但如果使用
kube-dns
中配置的resolv.conf
服务IP,则将失败我重新启动了coreDNS,konnectivity-agent等等,但是没有任何帮助。最后发现了来自AKS问题1320的提示,帮助解决了这个问题。即使这个问题与k8s版本1. 13有关,因此表明它不是一个版本特定的问题。我立即删除了命名空间
kube-system
中的所有pod。在这些pod启动并运行后,DNS问题消失了,一切都像以前一样工作。唷,这是一些旅程5天得到解决。期待下一次升级在3月现在!