错误:转发端口:错误升级连接:错误拨号后端:-Azure Kubernetes 服务
Posted
技术标签:
【中文标题】错误:转发端口:错误升级连接:错误拨号后端:-Azure Kubernetes 服务【英文标题】:Error: forwarding ports: error upgrading connection: error dialing backend: - Azure Kubernetes Service 【发布时间】:2019-07-01 17:08:16 【问题描述】:我们已将 Azure 上的 Kubernetes 服务集群升级到最新版本 1.12.4。之后我们突然意识到 pod 和节点之间不能再通过私有 ip 进行通信了:
kubectl get pods -o wide -n kube-system -l component=kube-proxy
NAME READY STATUS RESTARTS AGE IP NODE
kube-proxy-bfhbw 1/1 Running 2 16h 10.0.4.4 aks-agentpool-16086733-1
kube-proxy-d7fj9 1/1 Running 2 16h 10.0.4.35 aks-agentpool-16086733-0
kube-proxy-j24th 1/1 Running 2 16h 10.0.4.97 aks-agentpool-16086733-3
kube-proxy-x7ffx 1/1 Running 2 16h 10.0.4.128 aks-agentpool-16086733-4
如您所见,节点 aks-agentpool-16086733-0 具有私有 IP 10.0.4.35 。当我们尝试检查此节点上的 pod 上的日志时,我们收到了这样的错误:
获取 https://aks-agentpool-16086733-0:10250/containerLogs/emw-sit/nginx-sit-deploy-864b7d7588-bw966/nginx-sit?tailLines=5000×tamps=true: 拨号 tcp 10.0.4.35:10250: i/o 超时
我们在这个节点上也有 Tiller ( Helm),如果尝试连接到 Tiller,我们会从客户端 PC 收到这样的错误:
shmits-imac:~ andris.shmits01$ helm version 客户端: &version.VersionSemVer:"v2.12.3", GitCommit:"eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState:"clean" 错误:转发端口:升级错误 连接:错误拨号后端:拨打 tcp 10.0.4.35:10250: i/o 超时
有人知道为什么 pod 和节点会因私有 IP 而失去连接吗?
【问题讨论】:
很确定您需要一张支持票。您是否尝试重新启动节点?你可以检查 kube-proxy 日志吗?据人们说,它的 docker 守护进程通常在节点上被破坏 是的,重启了,检查日志,什么都没有 节点可以互相通信吗? node 可以和上面的 pod 对话吗? 我无法登录 pod,因为出现了同样的错误 dial tcp 10.0.4.35:10250: i/o 只登录节点,而不是pod... 【参考方案1】:所以,在我们将集群从 4 个节点缩减到 2 个节点之后,问题就消失了。在我们再次从 2 个节点扩展到 4 个节点之后,一切都开始正常工作了
【讨论】:
【参考方案2】:问题可能与 apiserver 有关。你检查过来自 apiserver pod 的日志吗?
您可以在集群中运行以下命令吗?你 200 OK 响应吗? curl -k -v https://10.96.0.1/version
【讨论】:
andris_shmits@Azure:~$ curl -k -v 10.96.0.1/version * 正在尝试 10.96.0.1.... 没有回复 以下命令中的clusterIP是什么(kubectl get svc| grep kubernetes) shmits-imac:~ andris.shmits01$ kubectl get svc| grep kubernetes kubernetes ClusterIP 10.0.8.1当使用 kubeadm 创建的 Kubernetes 集群中的节点没有获得与节点/机器 IP 匹配的正确内部 IP 地址时,就会出现这些问题。
问题:如果我从集群运行 helm list 命令,则会出现以下错误
helm list
Error: forwarding ports: error upgrading connection: unable to upgrade connection: pod does not exist
kubectl 获取节点 -o 宽
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k-master Ready master 3h10m v1.18.5 10.0.0.5 <none> Ubuntu 18.04.3 LTS 4.15.0-58-generic docker://19.3.12
k-worker01 Ready <none> 179m v1.18.5 10.0.0.6 <none> Ubuntu 18.04.3 LTS 4.15.0-58-generic docker://19.3.12
k-worker02 Ready <none> 167m v1.18.5 10.0.2.15 <none> Ubuntu 18.04.3 LTS 4.15.0-58-generic docker://19.3.12
请注意:k-worker02 的内部 IP 为 10.0.2.15,但我期望 10.0.0.7 这是我的节点/机器 IP。
解决方案:
第 1 步:连接到具有预期 IP 的主机(此处为 k-worker02)
第二步:打开下面的文件
sudo vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
第 3 步:使用 --node-ip 10.0.0.7 进行编辑和附加
代码sn-p
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --node-ip 10.0.0.7
第 4 步:重新加载守护进程并重启 kubelet 服务
sudo systemctl daemon-reload && sudo systemctl restart kubelet
结果:
kubectl 获取节点 -o 宽
$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k-master Ready master 3h36m v1.18.5 10.0.0.5 <none> Ubuntu 18.04.3 LTS 4.15.0-58-generic docker://19.3.12
k-worker01 Ready <none> 3h25m v1.18.5 10.0.0.6 <none> Ubuntu 18.04.3 LTS 4.15.0-58-generic docker://19.3.12
k-worker02 Ready <none> 3h13m v1.18.5 10.0.0.7 <none> Ubuntu 18.04.3 LTS 4.15.0-58-generic docker://19.3.12
通过上述解决方案,k-worker02 节点获得了预期的 IP (10.0.07) 并且“转发端口:”错误停止来自“helm list or helm install commnad”。
参考:https://networkinferno.net/trouble-with-the-kubernetes-node-ip
【讨论】:
以上是关于错误:转发端口:错误升级连接:错误拨号后端:-Azure Kubernetes 服务的主要内容,如果未能解决你的问题,请参考以下文章