kubernetes Azure中的kubetnetes群集(AKS)升级1.24.9处于失败状态,pod面临间歇性DNS问题

daupos2t  于 2023-02-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(291)

我使用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执行什么操作才能获得新配置?或者有没有重新触发此升级的方法?虽然我不确定原因,但只是假设它可以重置所有节点上的配置,并且可能会工作。

hs1ihplo

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标记触发另一次升级解决了此问题

--resource-group <ResourceGroupName> --name <AKSClusterName> \
   --control-plane-only \
   --kubernetes-version <KubernetesVersion>

然而,这并没有解决核心网络问题,因为从指标服务器到应用程序pod,所有尝试解析主机名的操作都失败了。有趣的是,内部服务根本无法访问,但外部网络(例如github.com、microsoft.com等)会间歇性地工作。
基于AKS issue 2903和相关ingress-nginx issue 8501,发现在k8s 1.24之后,ingress-nginx需要特殊注解以保持健康探测器正常运行。必须使用以下命令更新helm

helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
  --reuse-values \
  --namespace <NAMESPACE> \
  --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz

这确实使Azure aks运行状况 Jmeter 板和指标服务器显示为运行状态,但没有解决底层网络问题。使用MS troubleshooting guide for outbound connections所有部分中提到的所有场景和命令缩小了kube-dns服务和CoreDNS pod的问题范围。
因为如果将名称服务器直接上行到coreDNS pod IP(需要在同一节点上运行)或公共DNS,DNS解析将工作,但如果使用kube-dns中配置的resolv.conf服务IP,则将失败

jovyan@elyra-web-59f899c447-xw5x2:~$ host -a microsoft.com
Trying "microsoft.com.elyra-airflow.svc.cluster.local"
;; connection timed out; no servers could be reached

jovyan@elyra-web-59f899c447-xw5x2:~$ nslookup microsoft.com
;; connection timed out; no servers could be reached

jovyan@elyra-web-59f899c447-xw5x2:~$ nslookup microsoft.com 1.1.1.1
Server:         1.1.1.1
Address:        1.1.1.1#53

Non-authoritative answer:
Name:   microsoft.com
Address: 20.103.85.33
Name:   microsoft.com
Address: 20.112.52.29
Name:   microsoft.com
Address: 20.81.111.85
Name:   microsoft.com
Address: 20.84.181.62
Name:   microsoft.com
Address: 20.53.203.50

我重新启动了coreDNS,konnectivity-agent等等,但是没有任何帮助。最后发现了来自AKS问题1320的提示,帮助解决了这个问题。即使这个问题与k8s版本1. 13有关,因此表明它不是一个版本特定的问题。我立即删除了命名空间kube-system中的所有pod。在这些pod启动并运行后,DNS问题消失了,一切都像以前一样工作。
唷,这是一些旅程5天得到解决。期待下一次升级在3月现在!

相关问题