【问题标题】:is someone has any idea where can I edit ingress controller algorithm?有人知道我在哪里可以编辑入口控制器算法吗?
【发布时间】:2022-03-02 04:16:33
【问题描述】:

我使用 helm 在我的 Kubernetes 机器上安装了入口控制器,但不知何故不知道入口控制器将要编辑的配置文件放在哪里。我们可以通过helm list找到helm文件,但我的意思是程序本身的代码。 我想从入口控制器编辑一些算法来做一些项目。

现在我正在使用bitnami。我想尝试找到算法的代码。但仍然对做什么和使用什么感到困惑。我必须使用码头工人吗?我需要使用任何特定的应用程序进行编辑吗?我对 Nginx 入口算法文件源代码在哪里感到困惑。

【问题讨论】:

标签: cluster-computing kubernetes-ingress distributed-computing nginx-ingress


【解决方案1】:

在官方 NGINX website 上有一个很好的指南如何构建 NGINX Ingress Controller Image。 注意:此项目与kubernetes/ingress-nginx repo 中的 NGINX Ingress 控制器不同。

因此,更改入口控制器源代码以调整其算法并按照以下步骤操作:

  1. 在构建映像之前,请确保您的计算机上安装了以下软件:
  • Dockerv18.09+
  • GNU Make
  • git
  • OpenSSL,如果您想为默认服务器生成自签名证书和密钥,则可以选择。
  1. 克隆您的 Ingress Controller 存储库。

  2. 使用make 工具构建映像,如下所示:
    $ make debian-image PREFIX=myregistry.example.com/nginx-ingress TARGET=download
    检查 Makefile here

  3. 将映像推送到您的 Docker 注册表,如下所示:
    $ make push PREFIX=myregistry.example.com/nginx-ingress TAG=your-tag

之后,为您的自定义 Ingress Controller 创建您自己的 Helm 图表。

阅读本指南,了解如何创建您的第一个 Helm Chart here。作为一个很好的生产示例,您可以使用此NGINX Ingress Controller Helm Chart。您需要更改引用的图像。 另外,请查看this guide,了解如何使用 Helm 安装 NGINX Ingress Controller。

我希望这可以很好地了解如何从源代码构建自定义入口控制器。

编辑:

至于负载均衡算法,有几种built-in load balancer methods:least_conn、ip_hash、random、random 二、random 二、least_conn。 您可以使用注解nginx.org/lb-method 选择负载均衡器方法。查看更多信息here

但如果您仍想更改负载均衡器算法,则必须修改源代码并构建自定义入口控制器或使用其他一些现有的入口控制器。

【讨论】:

  • 感谢您的反馈,我已经完成了入口资源。我的意思是关于算法,因为我们知道 Nginx 入口控制器使用循环算法来平均分配负载以运行其作为负载均衡器的功能。我想改进其中的算法或做一些修改以提高算法或入口本身的性能。
  • 嗨@rthamrin!请检查我的更新答案:)
  • 谢谢,伙计,这对我帮助很大。您建议从源代码构建我自己的入口控制器并构建我自己的图像并稍后修改它们。
  • 你知道Advanced Configuration with Snippets吗?如果现有的入口控制器不适合您,并且您想创建自定义入口控制器,则一般方法是在源代码中进行所需的所有更改并按照我在答案中所写的方式构建它,然后创建您的 Helm 图表。因此,在将自定义入口控制器安装到 Kubernetes 集群后,您只需创建入口资源(而不是手动编辑 /etc/nginx 配置)。
  • 至于我们讨论的入口控制器,请查看link。有几种内置方法:least_conn、ip_hash、random、random 2、random 2、least_conn。您可以使用注释nginx.org/lb-method 选择负载均衡器,就像我之前评论中的文档中一样。但是如果您仍然想更改负载均衡器算法,则必须修改源代码并构建自定义入口控制器或使用其他一些现有的入口控制器。
【解决方案2】:

如果您使用任何开源入口控制器,您也许可以获取代码。

例如:

Nginx 入口控制器:https://github.com/kubernetes/ingress-nginx

Kong 入口控制器:https://github.com/Kong/kubernetes-ingress-controller

有可能没有专业或附加功能。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2020-11-20
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多