我们已将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×tamps=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失去连接吗?
答案 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
代码段
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --node-ip 10.0.0.7
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