【问题标题】:Error: forwarding ports: error upgrading connection: error dialing backend: - Azure Kubernetes Service错误:转发端口:错误升级连接:错误拨号后端:-Azure Kubernetes 服务
【发布时间】: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.Version{SemVer:"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...

标签: azure kubernetes


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-18
      • 2022-05-04
      • 2021-12-23
      • 2015-06-05
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多