当前位置: 首页 > 知识库问答 >
问题:

K8s:如何在同一节点内部署多个Django服务

谷梁镜
2023-03-14

我是运营模式工作的新手,正在花时间弄清楚整个最终架构应该是什么样子。我的项目目前在一个库伯内特斯集群和一个带有单个pod的单个节点上运行,在非常常见的Nginx反向代理UWSGI Django应用程序中。我必须实现缩放架构。我的理解是我应该在LoadBalancer后面使用入口控制器(我托管在OVH,他们确实提供了一个内置的LoadBalancer)。然后入口控制器将流量分配到我的pod。

问题1:如果我的Django应用程序侦听端口8000,则将ReplicaSet设置为2不起作用,因为该端口已被占用。这让我相信,每个节点只应该有一个pod,但一些信息表明情况并非如此。如何在同一节点上运行多个副本?

问题2:假设我又部署了9个节点。我的10个节点都应该位于1个入口控制器(和1个负载平衡器)之后,还是每个节点都应该有自己的入口控制器?

问题3:如果我只有一个入口控制器,负载平衡器不会真正“平衡”任何负载,它的唯一目的是向Internet公开我的服务,这正常吗?

问题4:当入口控制器过载时会发生什么?我是否复制所有内容,然后负载均衡器将请求分发给2个控制器?

这是一个很好的起点,但仍然不能直接回答我的问题。

共有1个答案

冯阳华
2023-03-14

>

不是直接的,入口控制器可以是很多东西。如果您使用的是自托管的(我看到了ingres-nginx标签,所以假设您正在使用它),那么每个控制器副本都是代理设置的独立副本。您至少需要2个以实现冗余,但除非您需要拆分流量,因为这两个流量跟不上(必须是真正巨大的请求量),否则这可能就是您所需要的。

是的,在K8s方面这很好,尽管如前所述,如果您有多个可用节点,您可能需要至少两个入口控制器副本,以防一个节点意外死亡。

边缘负载平衡器在所有nginx代理实例之间循环请求,因此,如果需要更多容量,则会生成更多副本(假设集群上有空闲CPU,如果没有,则先创建更多节点,然后创建更多副本)。

 类似资料:
  • 跨容器的应用编排服务可以帮助您创建并管理新一代的可移植的分布式应用程序,这些应用程序是由独立且互通的 Docker 容器快速组合而成,他们有动态的生命周期,并且可以在任何地方以可扩展的方式运行。Stack 是用一个 YAML 文件来描述容器配置和依赖的,这个描述文件完全兼容 Docker Compose 的语法。通过在创建 Stack 的时候指定自有主机集群,Stack 包含的容器会以合理的顺序被

  • 但它没有提供所需的产出。它给出的输出像 我是XSL的新手。有谁能帮我解决这个问题吗?

  • kubernetes Node 节点包含如下组件: flanneld docker kubelet kube-proxy 使用的变量 本文档用到的变量定义如下: $ # 替换为 kubernetes master 集群任一机器 IP $ export MASTER_IP=10.64.3.7 $ export KUBE_APISERVER="https://${MASTER_IP}:6443" $

  • kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 目前这三个组件需要部署在同一台机器上: kube-scheduler、kube-controller-manager 和 kube-apiserver 三者的功能紧密相关; 同时只能有一个 kube-scheduler、kube-cont

  • Kubernetes node节点包含如下组件: Flanneld:参考我之前写的文章Kubernetes基于Flannel的网络配置,之前没有配置TLS,现在需要在service配置文件中增加TLS配置,安装过程请参考上一节安装flannel网络插件。 Docker1.12.5:docker的安装很简单,这里也不说了,但是需要注意docker的配置。 kubelet:直接用二进制文件安装 kub

  • kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 目前这三个组件需要部署在同一台机器上。 kube-scheduler、kube-controller-manager 和 kube-apiserver 三者的功能紧密相关; 同时只能有一个 kube-scheduler、kube-cont