gpt4 book ai didi

docker - minikube service %servicename% --url 不返回任何内容

转载 作者:IT老高 更新时间:2023-10-28 21:35:57 29 4
gpt4 key购买 nike

我正在尝试公开我的 api,以便向它发送请求。但是,当我使用命令 minikube service api --url 时,我什么也没得到。根据 kubectl get pods,我所有的 pod 都运行良好,所以我有点不知道这可能是什么。

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-service.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: {}

api-deployment.yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
labels:
io.kompose.service: api
name: api
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: api
spec:
containers:
- image: blankit/web:0.0.1
name: api
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3001
resources: {}
restartPolicy: Always
status: {}

最佳答案

您的配置很好,但只缺少一件事。

Services 有很多种类型在 Kubernetes 中,但在这种情况下,您应该了解其中的两个:

ClusterIP Services:
Exposes the service on a cluster-internal IP. Choosing this value makes the service only reachable from within the cluster. This is the default.

NodePort:
Exposes the service on each Node’s IP at a static port (the NodePort). A ClusterIP service, to which the NodePort service will route, is automatically created. You’ll be able to contact the NodePort service, from outside the cluster, by requesting <NodeIP>:<NodePort>.

注意:
如果您有一个多节点集群并且您已经公开了一个 NodePort 服务,那么您可以从同一端口上的任何其他节点访问,而不一定是部署 pod 的同一节点。 p>

所以,回到你的服务,你应该在你的规范中指定服务类型:

kind: Service
apiVersion: v1
metadata:
...
spec:
type: NodePort
selector:
...
ports:
- protocol: TCP
port: 3001

现在如果你 minikube service api --url ,它应该返回一个类似 http://<NodeIP>:<NodePort> 的 URL .

注意:默认的 Kubernetes 配置会从 30000-32767 中随机选择一个端口。但如果需要,您可以覆盖它。


有用的引用资料:

关于docker - minikube service %servicename% --url 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45523220/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com