kubernetes - Kubernetes 在 LXC 和 Ingress 上的迷人分布
问题描述
我正在尝试从托管在本地 LXC 容器上的 Kubernetes 集群中公开我的服务的体面解决方案。
设置如下:
主机:运行 LXC 集群的 Ubuntu 18.04。
在 LXC 内部有一个 Charmed Distribution Of Kubernetes 正在运行我的应用程序和另一个运行 NGINX 反向代理的容器。
我还在 kubernetes 中设置了一个 Metallb 负载均衡器,并使用所有需要互联网公开的 k8s 服务LoadBalancer
:
apiVersion: v1
kind: Service
metadata:
namespace: blazedesk
name: blazedesk-sdeweb-server
labels:
app: blazedesk
spec:
ports:
- port: 80
targetPort: 80
name: "http"
- port: 443
targetPort: 443
name: "https"
selector:
app: blazedesk
tier: sdeweb-server
type: LoadBalancer
到目前为止,我所做的是将所有进入主主机的 http 和 https 流量重定向到 NXGINX 反向代理:
lxc config device add proxy myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80 proxy_protocol=true
lxc config device add proxy myport443 proxy listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443 proxy_protocol=true
然后将 Nginx 配置为将匹配 DNS 地址的流量重定向到 k8s 服务 external-ips:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/blazedesk-sdeweb-server LoadBalancer 10.152.183.215 10.190.26.240 80:31476/TCP,443:31055/TCP 17d
proxy_pass https://10.190.26.240;
可以想象,这种设置意味着大量的手动工作,尤其是在重新启动 k8s 服务并由 metallb 负载均衡器分配新 ip 的情况下。
有没有更简单的方法可以将来自主机的流量直接重定向到 kubernetes 入口,以某种方式绕过 LXC 层?
解决方案
我实际上使它与作为 LoadBalancer 服务公开的 NGINX 入口控制器一起工作,并使用 iptables 将来自主机的 http 和 https 流量重定向到入口外部 ip。
推荐阅读
- sql - 查询已被取消,因为此查询的估计成本 (15) 超过了配置的阈值 12。请联系系统管理员
- excel - Excel VBA - 将表格中除 x 行之外的所有行复制到另一个表格的底部
- excel - VBA,将变量写入单元格时字体大小发生变化
- php - 将内容添加到列而不覆盖的 PHP 表单
- python - 如何使用 pandas/python 将变量值放在列表的另一个列表中
- python - django迁移创建超级用户
- javascript - ExtJs 6.2 无法在被动事件侦听器中阻止默认值
- java - Java 上的 FileNotFoundException
- java - Jackson 预处理反序列化
- java - 如何使用带有 java 的堆栈检查标签是否在 html 文件中关闭?