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

Jak*_*cey 8 docker kubernetes minikube

我正在尝试公开我的api所以我可以向它发送请求.但是,当我使用命令时,minikube service api --url我什么都没得到.我所有的豆荚都运行得很好,kubectl get 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$
Run Code Online (Sandbox Code Playgroud)

任何帮助都将受到大力赞赏,谢谢.

我意识到这里的问题可能被认为是微不足道的,但那是因为我不确定我从教程中可以看到的更多信息我应该只是工作.如果您需要更多信息,请告诉我,我会通知您.

编辑:

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: {}
Run Code Online (Sandbox Code Playgroud)

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: {}
Run Code Online (Sandbox Code Playgroud)

Aym*_*ine 10

你的配置很好,但只缺少一件事.

Kubernetes中有许多类型的服务,但在这种情况下,您应该了解其中两种:

ClusterIP服务:
在集群内部IP上公开服务.选择此值使服务只能从群集中访问.这是默认值.

NodePort:
在静态端口(NodePort)上的每个Node的IP上公开服务.将自动创建NodePort服务将路由到的ClusterIP服务.您可以通过请求从群集外部联系NodePort服务<NodeIP>:<NodePort>.

注意:
如果您有一个多节点群集并且您已公开NodePort服务,则可以从同一端口上的任何其他节点进行访问,而不一定是部署该pod的同一节点.

因此,回到您的服务,您应该在您的规范中指定服务类型:

kind: Service
apiVersion: v1
metadata:
  ...
spec:
  type: NodePort
  selector:
    ...
  ports:
  - protocol: TCP
    port: 3001
Run Code Online (Sandbox Code Playgroud)

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

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


有用的参考: