错误:转发端口:错误升级连接:错误拨号后端:-Azure Kubernetes服务

时间:2019-02-07 14:38:56

标签: azure kubernetes

我们已将Azure上的Kubernates Service群集升级到最新版本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超时

我们也在该节点上获得了分iller器(Helm),如果尝试连接到分er器,我们会从客户端PC收到这样的错误:

  

shmits-imac:〜andris.shmits01 $掌舵版本客户端:   &version.Version {SemVer:“ v2.12.3”,   GitCommit:“ eecf22f77df5f65c823aacd2dbd30ae6c65f186e”,   GitTreeState:“干净”}错误:转发端口:错误升级   连接:拨号后端错误:拨打TCP 10.0.4.35:10250:I / O   超时

有人知道为什么Pod和节点通过私有IP失去连接吗?

3 个答案:

答案 0 :(得分:1)

因此,在将群集从4个节点缩减到2个节点后,问题消失了。在我们再次从2个节点扩展到4个节点之后,一切开始正常运行

答案 1 :(得分:0)

问题可能与apiserver有关。您是否从apiserver pod中检查了日志?

您可以在集群内部运行以下命令吗?你200 OK回应吗? curl -k -v https://10.96.0.1/version

答案 2 :(得分:0)

当使用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)

  • 步骤2:在文件下面打开

sudo vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
  • 第3步:编辑并添加--node-ip 10.0.0.7

代码段

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)和“转发端口:”错误不再来自“头盔列表或头盔安装命令”。

参考:https://networkinferno.net/trouble-with-the-kubernetes-node-ip