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

时间:2020-07-14 15:20:15

标签: docker kubernetes ansible pod kubespray

我已经在Kubespray的帮助下安装了kubernetes集群。 具有3个节点的群集(2个主节点和1个工作节点)。 节点1-10.1.10.110, 节点2-10.1.10.111, 节点3-10.1.10.112

Bar

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

$ 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

服务说明

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

问题: 我可以从节点1:31520(实际部署Pod的地方)访问该服务,但不能从其他节点(节点2:31520(或节点3:31520))访问相同的服务

$ 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

任何人都可以建议我所缺少的吗?

2 个答案:

答案 0 :(得分:3)

因为在10.1.10.110上只有一个吊舱

您的卷曲错误,您没有在111和112节点上部署Pod,这就是端点不起作用的原因。只需在其他节点上执行curl http://10.1.10.110:31520,它将起作用

答案 1 :(得分:0)

理想情况下,您应该能够使用任何节点IP通过NodePort访问Pod。如果kube-proxy或CNI插件(calico等)在您的群集中无法正常工作,则可能会导致无法通过未计划Pod的Nodes IP访问Pod的问题。

检查此相关问题kubernetes: cannot access NodePort from other machines