我正在尝试在每个Deployment上实现ClusterIP-Service。 仅供参考,我正在办公室中自己的服务器上设置kubernetes(出于某种原因不使用云)。以前这里是我能想到的网络/基础设施:
Ingress -> Service -> Deployment
我不确定为什么我的Ingress无法正常工作。我使用https://github.com/kubernetes/ingress-nginx作为我的Ingress Controller。我还从https://kubernetes.github.io/ingress-nginx/deploy/
应用了Bare-metal Service配置下面是我简单的Ingress和ClusterIP,例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: simpleweb-service
servicePort: 80
---
apiVersion : v1
kind : Service
metadata:
name: simpleweb-service
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
selector:
component: web
我尝试访问http://<server-internal-ip>:80
,但是我被拒绝连接,而不是被路由到特定服务中的应用程序。我在上面所做的任何事情都可能出错了吗?
在进入Ingress之前,我是否需要LoadBalancer
? (哪一个是理想的)
LoadBalancer -> Ingress -> Service -> Deployment
或者也许
LoadBalancer -> Service -> Deployment
谢谢。
答案 0 :(得分:1)
访问选项:
外部负载平衡器(可选)-> nodeport类型的服务-> Deploymenet
外部负载平衡器(可选)->入口->服务(clusterIP)-> Deploymenet
在这种情况下,您可以通过以下方法进行测试:首先使用nodeport并直接访问它,然后运行(如果可行),然后使用clusterIp并将其卷曲在集群中以确保它在端口80上运行,然后将其公开如果您想使用入口。还要调试和描述入口服务。
如果连接被拒绝,则端口可能有问题。
还要确保您为选择器使用了正确的标签。
docs: https://console.bluemix.net/docs/containers/cs_ingress.html#ingress
答案 1 :(得分:0)
您有很多选择可以公开您的服务。我建议使用metallb,它允许您使用LoadBalancer公开服务。使用ClusterIP,该服务不会暴露给外界,有关详细信息,请参见Publishing services - service types。 入口不是强制性的,但没有入口,则只能有一个服务+端口/ IP地址,而入口则允许您具有基于名称或/和基于路径的路由。