2017-10-16 110 views
0

在我的kubernetes羣集中的同一端口上運行多個服務;所以它就像ser1,ser2,ser3都使用相同的端口8080.我可以從一個pod內部訪問這些服務,如<serv-name>:8080,但是我也可以以同樣的方式從一個主機節點訪問它們,即在一個容器之外,但從一個集羣節點?從外部羣集但在羣集內訪問kubernetics服務

我試着環顧四周,但沒有在這方面找到任何相關的討論。如果有人可能會建議請。

我的示例配置

apiVersion: v1 
kind: Service 
metadata: 
    name: svc1 
    namespace: sample 
    labels: 
    app: svc1 
spec: 
    selector: 
    app: app1 
    ports: 
    - name: psvc1 
    port: 8080 
    targetPort: 9090 
    protocol: TCP 
+0

您是否試過用類型clusterIP暴露服務?這應該爲您提供一個虛擬羣集範圍的IP,您可以使用指定的端口進行調用。 –

+0

謝謝@DriesDeRydt。是的,我可以通過羣集IP訪問。但是,當服務啓動或重新啓動時,相同的clusterIP可能並不總是可用的。有沒有辦法告訴Kubernetes保留這樣的虛擬IP或更適當的一系列虛擬IP。我需要在我的負載均衡器中配置這些羣集IP。 –

+0

是的,你可以指定IP:https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address –

回答

1

爲德賴斯說,使用羣集IP,我們可以從節點訪問該服務。

kubectl run nginx --image=nginx --port=80 --expose=true 

kubectl get svc 
NAME   TYPE  CLUSTER-IP  EXTERNAL-IP PORT(S) AGE 
kubernetes ClusterIP 10.96.0.1  <none>  443/TCP 9d 
nginx  ClusterIP 10.103.206.246 <none>  80/TCP 52m 


# curl 10.103.206.246:80 
<!DOCTYPE html> 
<html> 
<head> 
<title>Welcome to nginx!</title> 
<style>