kubernetes - 具有 2 个入口的 Kubernetes (nginx)
问题描述
我尝试为我的 azure Kubernetes 集群 (AKS) 创建第二个入口。一种供公司内部使用,一种供客户使用。
第一个控制器由以下脚本构建:
https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.0/deploy/static/mandatory.yaml
和服务:
Nginx 的官方教程(https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/)说我需要使用 --ingress-class 标志来分隔两个控制器。当创建两个控制器时,我需要引用 ingress.class 注释使用的控制器的每个资源。
第一个问题
这是有道理的,因为我可以使用路由规范创建两个不同的入口。但是我是否还需要在 Nginx 服务中引用控制器?
第二个问题
我在我的机器上编辑了mandatory.yaml,并通过本地 YAML 文件应用了它。所以我将 --ingress-class 标志传递给控制器的参数(从mandatory.yaml 第218行开始):
containers:
- name: nginx-ingress-controller
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master
args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --publish-service=$(POD_NAMESPACE)/ingress-nginx
- --annotations-prefix=nginx.ingress.kubernetes.io
- --ingress-class=nginx-external
当我使用 --ingress-class=nginx-internal 重新部署它的强制.yaml 时,将重新配置现有控制器,但不会部署第二个控制器。我做错了什么?
解决方案
对于 nginx 服务,您需要提供选择器和标签,以便它选择您的第二个 nginx 入口控制器 pod。
nginx-ingress-controller
您刚刚使用现有入口控制器的名称更改了现有部署。这就是它重新配置现有入口控制器的原因。您需要创建具有不同名称的新部署 yaml并在新部署中添加--ingress-class
标志。
我建议为入口控制器 1 和入口控制器 2 创建两个不同的命名空间和两组不同的 yaml,并更改这些 yaml 中的名称、命名空间、标签和选择器。
推荐阅读
- reactjs - 是否可以在使用 npm 的反应 js 中使用 Material Design for Bootstrap?
- html - 将插槽传递到 Vue.js 中的插槽
- python - 仅当我在 php 中执行 python 程序时才发生 Python 导入错误
- python - 如何获得学期平均值
- ansible - Mikrotik 操作系统命令
- c - GTK3.0+ App UI 冻结问题。线程问题
- jquery - 如何在不刷新整个页面的情况下在 PHP/WordPress 中执行切换功能 jQuery?
- ios - (Swift) 如何在一个文件夹中创建子文件夹
- java - 为 String.format() 使用可变长度参数列表
- javascript - 表格行的验证