温馨提示:本文翻译自stackoverflow.com,查看原文请点击:load balancing - Charmed Distribution Of Kubernetes on LXC and Ingress
kubernetes load-balancing lxc

load balancing - LXC和入口上Kubernetes的迷人分布

发布于 2020-04-04 10:21:25

我正在尝试通过从本地LXC容器托管的Kubernetes集群中公开我的服务的方法来获得一个不错的解决方案。

设置如下:

主机:运行LXC集群的Ubuntu 18.04。

在LXC内部,有一个运行于我的应用程序的迷人的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 loadbalancer分配了新的ip。

是否有一种更简单的方法将流量从主机直接重定向到kubernetes入口,以某种方式绕过LXC层?

查看更多

提问者
Mihaimyh
被浏览
129
Mihaimyh 2020-02-01 10:18

实际上,我使它与作为LoadBalancer服务公开的NGINX入口控制器一起工作,并使用iptables将来自主机的HTTP和https流量重定向到入口external-ip。