【问题标题】:minikube service %servicename% --url return nothingminikube service %servicename% --url 不返回任何内容
【发布时间】:2018-01-13 08:40:30
【问题描述】:

我正在尝试公开我的 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: {}

【问题讨论】:

    标签: docker kubernetes minikube


    【解决方案1】:

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

    Kubernetes 中Services 的类型有很多种,但在这种情况下你应该知道其中的两种:

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

    节点端口:
    在静态端口(NodePort)上公开每个节点 IP 上的服务。将自动创建 NodePort 服务将路由到的 ClusterIP 服务。您可以通过请求 &lt;NodeIP&gt;:&lt;NodePort&gt; 从集群外部联系 NodePort 服务。

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

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

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

    现在如果你minikube service api --url,它应该返回一个类似http://&lt;NodeIP&gt;:&lt;NodePort&gt;的URL。

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


    有用的参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-08
      • 2016-02-23
      • 2020-04-27
      • 2019-04-06
      • 2012-02-15
      • 2020-09-07
      • 2021-11-22
      • 2015-11-06
      相关资源
      最近更新 更多