我已经在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
任何人都可以建议我所缺少的吗?
答案 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