minikube服务%servicename%--url什么都不返回

时间:2017-08-05 14:51:01

标签: docker kubernetes minikube

我试图暴露我的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: {}

1 个答案:

答案 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中选择一个随机端口。但如果需要,你可以覆盖它。

有用的参考资料: