错误:转发端口:错误升级连接:错误拨号后端:-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&timestamps=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 443/TCP 223d kubernetes-certbot LoadBalancer 10.0.8.219 13.81.13.65 80:31530/TCP 21d 10.0.8.1 是您的 apiserver 内部 IP 地址。试试( curl -k -v 10.0.8.1/version )【参考方案3】:

当使用 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 服务的主要内容,如果未能解决你的问题,请参考以下文章

Win10宽带连接拨号错误651怎么办?

错误619:不能建立到远程计算机的连接,因此用于此连接的端口已关闭

Kubernetes 端口转发 - 连接被拒绝

宽带连接错误678解决方法

宽带上网错误提示633是怎么回事啊?求解?

nginx 502