2017-10-16 109 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>