docker - 在我的 Kubernetes 基础架构中的 Ingress 之前是否需要有负载均衡器
问题描述
我正在尝试在我的每个部署上实现 ClusterIP-Service。仅供参考,我正在办公室自己的服务器上设置 kubernetes(由于某种原因不使用云)。以前这里是我能想到的网络/基础设施:
Ingress -> Service -> Deployment
我不确定为什么我的 Ingress 不能按预期工作。我使用https://github.com/kubernetes/ingress-nginx作为我的入口控制器。我还应用了来自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
,但连接被拒绝,而不是被路由到特定服务内的我的应用程序。我上面做的任何事情都可能出错吗?
我需要LoadBalancer
像下面这样在 Ingress 之前拥有吗?(哪一个是理想的)
LoadBalancer -> Ingress -> Service -> Deployment
或者可能
LoadBalancer -> Service -> Deployment
提前致谢。
解决方案
您有许多选项可以公开您的服务。我建议使用 metallb,它允许您使用 LoadBalancer 公开服务。使用 ClusterIP,服务不会暴露给外界,详情请参阅发布服务 - 服务类型。Ingress 不是强制性的,但没有它,您只能拥有一个服务+端口/IP 地址,而 Ingress 允许您拥有基于名称或/和路径的路由。
推荐阅读
- javascript - 登录后重定向到另一个页面而不刷新页面
- android - Android 同步缓存与 CoroutineCache 库
- c++ - 命名空间“Detours”没有成员“uint8_t”
- jquery - 如果选中复选框,我将如何更改气泡颜色?
- node.js - 为具有多个子域的安全、自托管 NextJS 项目提供服务
- python - Python/C++ 包装器在 Pybind11 中使用外部 dll
- arrays - 将 3 字节数组转换为 int32
- javascript - 在函数中添加 CSS
- ruby - Ruby 像 SQL 一样加入 2 个数组
- ipsec - 为什么 ESP 扩展标头的完整性受到完整性保护但未加密?