我试图暴露我的api所以我可以向它发送请求。但是,当我使用命令minikube service api --url
时,我什么都没得到。根据{{1}},我的所有播客都运行正常,所以我很高兴看到这可能是什么。
kubectl get pods
非常感谢任何帮助,谢谢。
我意识到这里的问题可能被认为是微不足道的,但那是因为我不确定我可以通过我所关注的教程中显示的更多信息应该只是起作用。如果您需要更多信息,请告诉我,我会通知您。
修改
API-service.yml
api-1007925651-0rt1n 1/1 Running 0 26m
auth-1671920045-0f85w 1/1 Running 0 26m
blankit-app 1/1 Running 5 5d
logging-2525807854-2gfwz 1/1 Running 0 26m
mongo-1361605738-0fdq4 1/1 Running 0 26m
jwl:.build jakewlace$ kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api 10.0.0.194 <none> 3001/TCP 23m
auth 10.0.0.36 <none> 3100/TCP 23m
kubernetes 10.0.0.1 <none> 443/TCP 5d
logging 10.0.0.118 <none> 3200/TCP 23m
mongo 10.0.0.132 <none> 27017/TCP 23m
jwl:.build jakewlace$
jwl:.build jakewlace$ minikube service api --url
jwl:.build jakewlace$
API-deployment.yml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
io.kompose.service: api
name: api
spec:
ports:
- name: "3001"
port: 3001
targetPort: 3001
selector:
io.kompose.service: api
status:
loadBalancer: {}
答案 0 :(得分:8)
您的配置很好,但只缺少一件事。
Kubernetes中有许多类型的Services,但在这种情况下,您应该了解其中两种:
ClusterIP服务:
在集群内部IP上公开服务。选择此值使服务只能从群集中访问。这是默认值。<强> NodePort: 强>
在静态端口(NodePort)上在每个节点的IP上公开服务。将自动创建NodePort服务将路由到的ClusterIP服务。您可以通过请求<NodeIP>:<NodePort>
从群集外部联系NodePort服务。
注意:强>
如果您有一个多节点群集并且您已公开 NodePort服务,则可以从同一端口上的任何其他节点进行访问,而不一定是部署该pod的同一节点。
因此,回到您的服务,您应该在您的规范中指定服务类型:
kind: Service
apiVersion: v1
metadata:
...
spec:
type: NodePort
selector:
...
ports:
- protocol: TCP
port: 3001
现在,如果您minikube service api --url
,则应返回http://<NodeIP>:<NodePort>
等网址。
注意:默认的Kubernetes配置将从30000-32767中选择一个随机端口。但如果需要,你可以覆盖它。
有用的参考资料: