minikube 服务 %servicename% --url return 无
minikube service %servicename% --url return nothing
我正在尝试公开我的 api 以便我可以向它发送请求。但是,当我使用命令 minikube service api --url
时,我什么也没得到。根据 kubectl get pods
,我所有的 pods 都 运行 很好,所以我对这可能是什么感到困惑。
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: {}
您的配置没问题,但只缺少一件事。
Kubernetes 中有很多种Services,但在这种情况下你应该知道其中的两种:
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 部署到的同一节点.
因此,回到您的服务,您应该在规范中指定服务类型:
kind: Service
apiVersion: v1
metadata:
...
spec:
type: NodePort
selector:
...
ports:
- protocol: TCP
port: 3001
现在如果你minikube service api --url
,它应该return一个URL像http://<NodeIP>:<NodePort>
。
注意:默认的 Kubernetes 配置会从 30000-32767 中随机选择一个端口。但如果需要,您可以覆盖它。
有用的参考资料:
我正在尝试公开我的 api 以便我可以向它发送请求。但是,当我使用命令 minikube service api --url
时,我什么也没得到。根据 kubectl get pods
,我所有的 pods 都 运行 很好,所以我对这可能是什么感到困惑。
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: {}
您的配置没问题,但只缺少一件事。
Kubernetes 中有很多种Services,但在这种情况下你应该知道其中的两种:
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 部署到的同一节点.
因此,回到您的服务,您应该在规范中指定服务类型:
kind: Service
apiVersion: v1
metadata:
...
spec:
type: NodePort
selector:
...
ports:
- protocol: TCP
port: 3001
现在如果你minikube service api --url
,它应该return一个URL像http://<NodeIP>:<NodePort>
。
注意:默认的 Kubernetes 配置会从 30000-32767 中随机选择一个端口。但如果需要,您可以覆盖它。
有用的参考资料: