2017-08-05 68 views
2

我試圖揭露我的API,所以我可以發送請求給它。然而,當我用命令minikube service api --url我什麼也沒得到。我所有的艙體根據kubectl get pods運行良好,所以我升技卡住什麼,這可能是。minikube服務SERVICENAME%%--url返回任何

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: {} 
+0

你能分享你的 'API' 服務YAML文件? –

+0

@DavidB。我已經添加了配置。 –

回答

3

你的配置是不錯,但唯一缺少的一兩件事。

有許多類型的Kubernetes Services,但在這種情況下,你應該知道其中的兩個命令:

ClusterIP服務:
暴露了美國在集羣內部的IP服務。選擇此值使得該服務只能從羣集內訪問。這是默認設置。

NodePort:
在靜態端口(NodePort)自曝在每個節點上的IP服務。一個ClusterIP服務,該服務NodePort意志路線,自動創建。您可以聯繫NodePort服務,從集羣外,通過請求<NodeIP>:<NodePort>

注:
如果你有一個多節點集羣,你已經露出了NodePort服務,您可以訪問來自同一個端口上的其他節點,不一定是相同的節點莢被部署到。

於是,又回到了你的服務,你應該在你的規範指定服務類型:

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

現在,如果你minikube service api --url,它應該返回一個URL像http://<NodeIP>:<NodePort>

注意:默認的Kubernetes配置將從30000-32767中選擇一個隨機端口。但是如果需要的話,你可以覆蓋它。


有用的參考資料:

+0

很棒,你是對的。謝謝你回覆 –

+0

@JakeLacey,很高興幫助:) –