无法访问 kubernetes nodeport 服务
Posted
技术标签:
【中文标题】无法访问 kubernetes nodeport 服务【英文标题】:Can't access kubernetes nodeport service 【发布时间】:2021-06-27 23:22:35 【问题描述】:我认为我没有错过任何东西,但我的 Angular 应用似乎无法联系我通过 Kubernetes 公开的服务。
每当我尝试在本地主机上调用暴露的节点端口时,都会被拒绝连接。
部署文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: society-api-gateway-deployment
spec:
replicas: 1
selector:
matchLabels:
app: society-api-gateway-deployment
template:
metadata:
labels:
app: society-api-gateway-deployment
spec:
containers:
- name: society-api-gateway-deployment
image: tbusschaert/society-api-gateway:latest
ports:
- containerPort: 80
服务文件
apiVersion: v1
kind: Service
metadata:
name: society-api-gateway-service
spec:
type: NodePort
selector:
app: society-api-gateway-deployment
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30001
我仔细检查了,呼叫没有到达我的 pod,这是我在拨打电话时遇到的错误:
我在本地机器上使用 minikube 和 kubectl。
我没有选择,尽我所能,在此先感谢。
编辑 1:
所以按照建议,我使用节点IP调用服务:
我在 Angular 项目中更改了 IP,现在出现连接超时:
至于端口转发,我得到一个权限错误:
【问题讨论】:
【参考方案1】:从 doc 中,您看到模板将是这样的 <NodeIP>:<NodePort>
。
NodePort:在每个节点的 IP 上的静态端口(NodePort)上公开服务。自动创建 NodePort 服务路由到的 ClusterIP 服务。您可以通过请求
<NodeIP>:<NodePort>
从集群外部联系 NodePort 服务。
首先,从kubectl get node -o wide
comamnd 获取NodeIP
。
然后尝试使用<NodeIP>:<NodePort>
。例如,如果 NodeIP 是 172.19.0.2
,则尝试使用您的子 url 使用 172.19.0.2:30001
。
或者,另一种方法是使用端口转发。在终端中首先尝试使用kubectl port-forward svc/society-api-gateway-service 80:80
进行端口转发。然后使用您尝试过的网址与localhost
。
【讨论】:
使用 NodeIP 进行调用,现在又出现一个错误(编辑原始帖子以显示过程)。我尝试了端口转发,得到一个权限错误,也显示在编辑中。kubectl port-forward svc/society-api-gateway-service 8081:80
尝试使用不同的本地端口。本地端口 80 已在使用中,这就是您收到此错误的原因
还有一件事,您的服务器似乎只监听 ipv6 连接
也许我应该指定,我正在使用 minikube(我在我的开发机器上运行集群,并且角度应用程序没有部署在 kubernetes 上,它直接来自 IDE)。我会尝试端口转发并让你保持最新
@Emon46 可能是对的。你能确保你的应用程序正在侦听 IPv4 吗?【参考方案2】:
所以,正如我所想,问题与 minikube 未打开我的本地主机有关。
首先我不需要 NodePort,但 LoadBalancer 也适合我的需要,所以我的 API 网关变成了 LoadBalancer。
其次,当使用 minikube 时,为了实现我想要的(在我的本地机器上运行 kubernetes,并且我的 angular 客户端也在我的本地机器上),你必须创建一个 minikube 隧道,他们在这里是如何解释的:@987654321 @
【讨论】:
以上是关于无法访问 kubernetes nodeport 服务的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 Kubernetes 的 AWS ELB 访问 Grafana(用于 prometheus)
技术漫谈 | Kubernetes 的 NodePort,LoadBalancer 和 Ingress 该如何选择?
Kubernetes进阶之路(九)Service系列之ClusterIP&NodePort