在进入我的 Kubernetes 基础设施之前,我是否需要一个负载均衡器
Do I require to have a Load Balancer before Ingress in my Kubernetes Infrastructure
我正在尝试在我的每个部署上实施 ClusterIP-Service。 仅供参考,我正在办公室自己的服务器上设置 kubernetes(出于某种原因未使用云)。之前能想到的是network/infrastructure:
Ingress -> Service -> Deployment
我不确定为什么我的 Ingress 没有按预期工作。我正在使用 https://github.com/kubernetes/ingress-nginx as my Ingress Controller. I also applied Bare-metal Service config from https://kubernetes.github.io/ingress-nginx/deploy/
下面是我的简单 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
提前致谢。
访问选项:
- 使用 k8s 服务(clusterIP、nodeport、loadbalancer(在 aws、gcp 环境中))
External load balanacer (optional) ->Service of type nodeport -> Deploymenet
- 使用入口
External load balanacer (optional) -> Ingress -> Service ( clusterIP)-> Deploymenet
在你的情况下,你可以先使用 nodeport 测试它并直接访问它,然后如果有效,然后使用 clusterIp,并在集群内卷曲它以确保它在端口上 运行 80 ,如果你想使用 ingress,则将其暴露在 ingress 上。同时调试和描述入口服务。
如果连接被拒绝,可能是端口有问题。
还要确保您为选择器使用了正确的标签。
文档:
https://console.bluemix.net/docs/containers/cs_ingress.html#ingress
您有多种选择来公开您的服务。我建议 metallb, it allows you to expose services with LoadBalancer. With ClusterIP, the service is not exposed to the outside world, see Publishing services - service types 了解详情。
Ingress不是强制性的,但没有它,你只能有一个服务+端口/IP地址,而ingress允许你有名称或/和基于路径的路由。
我正在尝试在我的每个部署上实施 ClusterIP-Service。 仅供参考,我正在办公室自己的服务器上设置 kubernetes(出于某种原因未使用云)。之前能想到的是network/infrastructure:
Ingress -> Service -> Deployment
我不确定为什么我的 Ingress 没有按预期工作。我正在使用 https://github.com/kubernetes/ingress-nginx as my Ingress Controller. I also applied Bare-metal Service config from https://kubernetes.github.io/ingress-nginx/deploy/
下面是我的简单 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
提前致谢。
访问选项:
- 使用 k8s 服务(clusterIP、nodeport、loadbalancer(在 aws、gcp 环境中))
External load balanacer (optional) ->Service of type nodeport -> Deploymenet
- 使用入口
External load balanacer (optional) -> Ingress -> Service ( clusterIP)-> Deploymenet
在你的情况下,你可以先使用 nodeport 测试它并直接访问它,然后如果有效,然后使用 clusterIp,并在集群内卷曲它以确保它在端口上 运行 80 ,如果你想使用 ingress,则将其暴露在 ingress 上。同时调试和描述入口服务。
如果连接被拒绝,可能是端口有问题。
还要确保您为选择器使用了正确的标签。
文档: https://console.bluemix.net/docs/containers/cs_ingress.html#ingress
您有多种选择来公开您的服务。我建议 metallb, it allows you to expose services with LoadBalancer. With ClusterIP, the service is not exposed to the outside world, see Publishing services - service types 了解详情。 Ingress不是强制性的,但没有它,你只能有一个服务+端口/IP地址,而ingress允许你有名称或/和基于路径的路由。