Docker 如何为2个远程节点有效地使用Kubernetes
这么长时间以来,我想把我所有的业务转移到K8S,但我仍然对此犹豫不决。这个问题可能涉及面很广,但请耐心听我说。让我先介绍一下现有的制度 我拥有很多不同的网站(>30)。很多都是为了我自己的实验,但有些是为了实际客户。我在纽约有一个VM(我使用的是DigitalOcean),有多个Docker容器,经常使用Docker 如何为2个远程节点有效地使用Kubernetes,docker,ssl,kubernetes,networking,certbot,Docker,Ssl,Kubernetes,Networking,Certbot,这么长时间以来,我想把我所有的业务转移到K8S,但我仍然对此犹豫不决。这个问题可能涉及面很广,但请耐心听我说。让我先介绍一下现有的制度 我拥有很多不同的网站(>30)。很多都是为了我自己的实验,但有些是为了实际客户。我在纽约有一个VM(我使用的是DigitalOcean),有多个Docker容器,经常使用Docker compose进行管理。每个站点有一个容器。请求首先进入运行HAProxy的front容器。这会剥离SSL,然后将请求转发到运行Nginx的2proxy容器。然后,这两个容器将请求
Docker compose
进行管理。每个站点有一个容器。请求首先进入运行HAProxy的front
容器。这会剥离SSL,然后将请求转发到运行Nginx的2proxy
容器。然后,这两个容器将请求转发给所有其他容器以获得其服务。我所有的证书都来自LetsEncrypt,必须每3个月更新一次。为此,我停止front
,运行certbot--apache
,使其绑定到端口80。它获取证书,然后我停止apache,然后重新创建front
容器
我这样做有几个原因:
- 我改变了很多站点配置,以及它们是如何连接在一起的。因此,
预计将永远运行,除非我获得证书,front
s预计会发生很大变化。我更改proxy
映像,然后停止并重新创建第一个容器,然后停止并重新创建第二个容器,这样就不会出现任何停机代理
- 当有多个节点时,我真的不知道如何获取证书。事实上,我在整个证书的事情上完全是个傻瓜,
几乎是我所知道的做这件事的唯一方法LetsEncrypt
- 我想直接编辑远程服务器上的文件。我有一个直接编辑生产代码的坏习惯,主要是因为我对设置开发、登台和生产环境感到不耐烦。这需要花费太多的时间,而且收益感觉很小。对于客户来说,他们通常是小企业,有30个网站,这样做会让我破产。我还可以总共有4台服务器,2台用于K8S群集,2台用作转发到NodePort的负载平衡器。这个计划行得通吗?证书的自动更新在这里如何工作
- 我们可以在DNS中添加相同或多个条目吗?example.com是否可能多次使用记录
- 您可能需要设置具有区域入口支持的区域K8s群集。您可以将certmanager与letsencrypt一起使用,它将在LB级别管理您的证书,并在前端终止证书 如果您希望使用两个虚拟机,请在两个虚拟机前面放置一个LB,并在那里设置SSL
- 如果您将K8s与无状态PODs一起使用,则不能在容器内编辑直接文件。更好地管理内部的Github更新,并同时将容器部署到两个集群上,以便设置CI/CD。在使用主从概念设置数据库服务器的情况下,您是对的,您可以使用读取副本
- 要将流量从服务器路由到K8s的内部应用程序,您可以使用
节点端口(超过30000,但在SVC中更改目标端口)创建内部LB或公开服务,如果要使用目标端口重定向特定端口上的请求,则可以路由端口
- 即使您有多个web服务器,它也可以正常工作
请注意,可能是我的问题问错了问题(比如,可能是我不应该使用A和AAAA记录来指挥交通),而且有一种完全不同的方法来做到这一点,所以请随意提出正确的问题。脱帽阅读你的问题,写下全部内容,但其中一半是无用的 回答你的问题:
尽管如此,我仍然没有得到“我总共可以有4台服务器,2台用于K8S群集,2台用作转发到NodePort的负载平衡器。这个计划有效吗?证书的自动更新在这里如何工作?”哪台服务器在前面,哪台在后端。如果您的所有服务都是网站(通过http运行)您可以使用基于主机头(域名)将流量路由到POD,并且只使用一个LB和一个IP地址。最流行的入口控制器似乎是 如果您不想使用LB,您可以使用它来公开nginx入口,但一旦您拥有具有多个节点的k8s群集,请使用LB,因为通常不建议使用hostPort,除非您有很好的理由这样做 说到DNS,您可以使用类似的方法进行位置路由。您不一定需要使用AWS。我只是想告诉你们,这个问题有解决办法,但你们可以随心所欲 用于与DNS-01质询一起使用的证书。 来自letsencrypt文档关于DNS-01挑战:
对于同时部署到2个独立集群的情况,您可以使用一些CI/CD管道,例如..1。是的,可以有多个条目,但据我所知,DNS将进行循环,这意味着日本用户将有50%的时间去纽约,50%的时间去新加坡。我希望日本的用户总是去新加坡。这在DNS中是可能的吗?我听说过关于anycast的东西,但那很复杂,而且(可能)成本太高。我也听说过GeoDNS,但显然它们处理起来很挑剔,支持也不多。那么还有什么其他的吗?我不确定,我期待着建议基于地理位置的LB路由,如果你有静态内容使用CDN。