当前位置: 首页 > 知识库问答 >
问题:

为什么我不能从其他节点IP访问kubernetes pod?

岳晟
2023-03-14

我已经在Kubespray的帮助下安装了kubernetes集群。具有3个节点的群集(2个主节点

$ kubectl get nodes
NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    master   12d   v1.18.5
node2   Ready    master   12d   v1.18.5
node3   Ready    <none>   12d   v1.18.5

我在node1(10.1.10.110)中部署了这个pod并公开了nodeport服务,如图所示。

NAMESPACE     NAME                                              READY   STATUS    RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES

default       pod/httpd-deployment-598596ddfc-n56jq             1/1     Running   0          7d21h   10.233.64.15   node1   <none>           <none>
---
NAMESPACE     NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE     SELECTOR

default       service/httpd-service               NodePort    10.233.16.84    <none>        80:31520/TCP             12d     app=httpd

服务说明

$ kubectl describe services -n default httpd-service
Name:                     httpd-service
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=httpd
Type:                     NodePort
IP:                       10.233.16.84
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31520/TCP
Endpoints:                10.233.64.15:80
Session Affinity:         None
External Traffic Policy:  Cluster

问:我可以从 node1:31520(Pod 实际部署的位置)访问服务,但无法从其他节点访问相同的服务(node2:31520(或)节点3:31520)

$curl http://10.1.10.110:31520
<html><body><h1>It Works!</h1></body></html>

but if I curl with other node IP, timed out response

$curl http://10.1.10.111:31520
curl (7): Failed connect to 10.1.10.111; Connection timed out

$curl http://10.1.10.112:31520
curl (7): Failed connect to 10.1.10.112; Connection timed out

有人能建议我错过了什么吗?

共有2个答案

俞涵涤
2023-03-14

因为10.1.10.110上只有一个吊舱

您的curl是错误的,您没有在111和112个节点上部署pod,这就是endpoint不工作的原因。只需在其他节点上执行curlhttp://10.1.10.110:31520,它就会工作

微生毅
2023-03-14

理想情况下,您应该能够使用任何节点IP通过NodePort访问pod。如果库贝代理或CNI插件(calico等)在您的集群中无法正常工作,那么它可能会导致通过未调度Pod的节点IP无法访问pod的问题。

检查此相关问题kubernetes:无法从其他机器访问NodePort

 类似资料:
  • 情况有点复杂。我通过OpenCV归档了几个CCTV摄像头提要(rtsp、h264、无音频),虽然OpenCV工作正常,但CPU利用率太高,开始一次又一次地丢失一些帧。 为了降低CPU利用率,我开始使用FFMPEG跳过解码和编码过程,这在我的家用机器上非常有效。然而,当我连接到我的大学VPN并试图将其部署到我们的实验室服务器上时,FFmpeg无法读取任何帧,ffplay也无法获取任何内容。然而,Op

  • 你可以在 属性检查器 里修改节点和组件,也能在脚本中动态修改。动态修改的好处是能够在一段时间内连续地修改属性、过渡属性,实现渐变效果。脚本还能够响应玩家输入,能够修改、创建和销毁节点或组件,实现各种各样的游戏逻辑。要实现这些效果,你需要先在脚本中获得你要修改的节点或组件。 在本篇教程,我们将介绍如何 获得组件所在的节点 获得其它组件 使用 属性检查器 设置节点和组件 查找子节点 全局节点查找 访问

  • 你可以在 属性检查器 里修改节点和组件,也能在脚本中动态修改。动态修改的好处是能够在一段时间内连续地修改属性、过渡属性,实现渐变效果。脚本还能够响应玩家输入,能够修改、创建和销毁节点或组件,实现各种各样的游戏逻辑。要实现这些效果,你需要先在脚本中获得你要修改的节点或组件。 在本篇教程,我们将介绍如何 获得组件所在的节点 获得其它组件 使用 属性检查器 设置节点和组件 查找子节点 全局节点查找 访问

  • file1.go里 room.go里 是可以的 但是main.go里 就保存后直接给我删除了 "./file1" 在vscode里 就保存后直接给我删除了 "./file1" 在vscode里 我想在main.go里可以访问 file1.go的全局变量

  • 问题内容: 我正在研究TypeScript中私有成员的实现,但我感到有些困惑。Intellisense不允许访问私有成员,但是在纯JavaScript中,仅此而已。这使我认为TS无法正确实现私有成员。有什么想法吗? 问题答案: 就像类型检查一样,成员的隐私仅在编译器中强制执行。 私有属性被实现为常规属性,并且不允许类外的代码对其进行访问。 为了使某些东西真正成为类的私有对象,它不能成为该类的成员,

  • 问题内容: 我的班级有一个名为DataStorage的哈希图: 如何在另一个类中访问此HashMap中的数据? 问题答案: 将HashMap创建为实例变量,并提供一种将其访问类API的方法:

  • 本文向大家介绍RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么?相关面试题,主要包含被问及RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么?时的应答技巧和注意事项,需要的朋友参考一下 不是,原因有以下两个: 存储空间的考虑:如果每个节点都拥有所有队列的完全拷贝,这样新增节点不但没有新增存储空间,反而增加了更多的冗余数据; 性能的考虑:如果每条消息都需要完整拷贝到每一个集群节点,那新

  • 有人问过我这个问题。我没能给出正确的答案。你能帮我一下吗?为什么我们不能在setTimeout中访问事件(e)的值?