问题标签 [kubernetes-ingress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4859 浏览

kubernetes - 多主机 Kubernetes 入口控制器

我已经研究 Kubernetes 几个星期了,并且使用 kube-lego NGINX 示例 ( https://github.com/jetstack/kube-lego ) 已经使用 DigitalOcean 上的 Rancher 成功地将服务部署到 Kubernetes 集群。

我已经部署了示例静态站点、Wordpress、Laravel、Craft CMS 等。所有这些都使用自定义命名空间、部署、秘密、带有外部注册表的容器、服务和入口定义。

使用示例(乐高)NGINX 入口控制器设置,我能够将 DNS 应用于我的 K8s 集群的公开 IP 地址,并显示生成的站点。

不过,我不知道的是如何允许多个主机让 Ingress Controller 为相同的部署提供服务,从而为集群提供 HA Ingress。(通过应用外部负载均衡器服务、geo-ip 或你有什么)。

Rancher(稳定版)允许我添加多个主机,我一次增加了 3 到 5 个,并且 Kubernetes 被配置和部署在所有主机上。此外,我将定义许多副本和/或部署(如上所列),它们将分布在集群中并且可以按预期访问。我什至指定了 Ingress Controller 的多个副本,但当然它们都被安排在同一个主机上,只给了我一个 Ingress 的 IP 地址。

那么如何允许多个主机(每个都有自己的公共 IP 地址)允许进入集群?我还阅读了有关设置多个 Ingress Controller 的信息,但是您必须指定哪些 Ingress Controller 正在为哪些部署/服务提供服务,这完全违背了目的。

也许我遗漏了一些东西,但是如果 K8s 多主机应该提供 HA,并且带有 Ingress Controller 的主机出现故障,那么该服务将在其他主机上重新调度,但一切都指向的 IP 地址将死了,因此中断。有什么方法可以为同一组部署/服务提供多个 IP 地址?

0 投票
1 回答
243 浏览

docker - NGINX Plus 容器抛出错误,因为找不到 nginxplus 可执行文件

部署 nginxplus 容器时出现以下错误:

我使用了来自https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/的 nginxplus dockerfile

我使用了来自https://github.com/nginxinc/kubernetes-ingress/blob/master/install/deployment/nginx-plus-ingress.yaml的入口控制器文件

Pod 日志更新:

这就是我尝试检索 pod 日志时得到的结果。

请帮忙!!

0 投票
1 回答
1585 浏览

nginx - 在入口主机名中使用通配符

我想使用 kubernetes 将所有 *.xxxx.com 请求重定向到 m-*.xxxx.com。我使用 nginx 进行路由。有没有办法做到这一点?

我目前在入口定义中有'*.xxxx.com',但它不接受这样的东西:'m-*.xxxx.com'

0 投票
1 回答
953 浏览

kubernetes - Kubernetes 端点为空,我可以重新启动 pod 吗?

我有一种情况,我有零个端点可用于一项服务。为了测试这一点,我特制了一个 yaml 描述符,它使用一个简单的节点服务器来设置和检索 pod 的就绪/活动状态:

节点服务器具有设置和检索活跃度和就绪度的方法。

当应用程序启动时,我可以看到创建了 3 个副本并且它们的状态已准备好。好的,那么现在我手动触发他们的准备状态,以设置为 false [从入口外部]。一个 pod 已从端点正确移除,因此没有流量路由到它[没关系,因为这是预期的行为]。当我将所有 pod 的所有就绪状态设置为 false 时,端点列表为空 [仍然是预期的行为]。

那时我无法从入口外部设置 ready=true,因为流量没有路由到任何 pod。这里有没有办法例如在 n-timer 或 n-seconds 后没有准备好时触发 Pod 的重启?或者当端点列表为空时?

0 投票
1 回答
1498 浏览

kubernetes - GCE Kubernetes 会话持久性

我在 GCE Kubernetes 上运行一个 wordpress / woocommerce 站点,并且由于会话持久性而无法扩展。

LoadBalancer (GCE Ingress) 将所有流量发送到反向代理,然后将流量发送到我设置的不同服务,其中之一是 wordpress。

如果我SessionAffinity: ClientIP在 WordPress 服务上使用,所有流量都流向一个 pod,而其他流量将被忽略。这似乎是因为服务看到的是 LoadBalancer 的 IP 地址,而不是客户端的 IP 地址。尽管 externalTrafficPolicy: Local在 nginx 反向代理和 wordpress NodePort 服务上都设置了这一点。

我还尝试使用 wordpress 服务作为默认后端,我设法让流量流向所有 pod,但失去了会话亲和性。

Ingress 还执行 TLS 终止,我已经看到这会影响 ClientIP 可见性,但我认为该问题已通过外部流量策略解决。

我们也在使用 Cloudflare,我想知道这是否会产生影响。但是我们正在使用 ngx_http_realip_module 来尝试获取正确的客户端 IP 地址。

0 投票
1 回答
3267 浏览

amazon-web-services - 无法访问在 AWS 上运行的 Kubernetes 集群上通过 nginx 入口控制器公开的 Spring Boot 微服务

在本演练之后,我使用 kube-up.sh 脚本在 AWS 上启动了一个 3 节点 Kubernetes 集群(版本:1.5.8):

https://ryaneschinger.com/blog/building-a-kubernetes-cluster-on-aws/

我能够成功访问集群并查看 UI。命令输出kubectl cluster-info

在此处输入图像描述

我写了一个简单的 Spring Boot 微服务:

并在 Gradle 构建后将其打包到 Docker 容器中,并且能够在本地成功使用它。我已将图像推送到 DockerHub。

现在我正在使用 Helm Charts 将此应用程序部署到 Kubernetes。

部署描述符:

服务描述符:

我对其他 3 个类似的 Spring Boot 微服务遵循了相同的过程。

入口描述符:

首先,我使用 Helm Charts 在集群上安装 nginx 控制器:

然后我使用以下方法安装我的图表:

然后,我将 crud.qdatalabs.com(类型 A)的别名从 Route53 指向由 Ingress 资源生成的 ELB。

URL crud.qdatalabs.com/healthz 给出 200 OK 响应

当我尝试使用 URL crud.qdatalabs.com/service1/addcustomer?name=starman访问微服务时

我收到了 WhiteLabel 错误页面:

在此处输入图像描述

我想我犯了一些配置错误,但无法解决。请帮助我任何方向。我很乐意提供更多细节。谢谢你。

0 投票
4 回答
9440 浏览

kubernetes - GKE 是否支持带有静态 ip 的 nginx-ingress?

我一直在使用 Google Cloud Load Balancer 入口。但是,我正在尝试nginxinc/kubernetes-ingress在 GKE 中具有静态 IP 地址的节点中安装控制器。

  1. 我可以在同一个集群中使用 Google 的 Cloud Load Balancer 入口控制器吗?
  2. 我们如何使用nginxinc/kubernetes-ingress静态IP?

谢谢

0 投票
1 回答
339 浏览

kubernetes - 修改 nginx 入口的命名空间时出错

我试图修改我的入口,因为我的入口控制器和入口服务在 nginx-ingress 名称空间中运行。

我尝试使用:kubectl edit ing lhingress其中入口名称是 lhingress。它打开了一个编辑器,但是当我尝试修改然后保存它时。我得到以下错误。

您能否建议我如何将此入口指向不同的命名空间

0 投票
1 回答
1073 浏览

kubernetes - 无法通过 kubernetes python 客户端删除 kubernetes 入口对象

删除入口对象时出现此错误。

这是我用来执行删除的代码片段......

我确保入口对象确实存在并具有正确的 API 版本控制。在尝试删除部署对象时遇到类似的错误!

0 投票
2 回答
12296 浏览

docker - 如何从客户端访问使用 Nginx Ingress+Kubernetes 托管的 MySql

我是 Kubernetes 和 Nginx Ingress 工具的新手,现在我正在尝试在 AWS 上的 Nginx Ingress 中使用 VHost 托管 MySql 服务。我创建了一个类似的文件:

我的 LoadBalancer(由 Nginx Ingress 创建)端口配置如下所示:

mysql.example.com指向我的 ELB。

我期待类似的东西,如果尝试类似的东西,我可以从我的本地盒子连接到 MySql:

这是行不通的。如果我尝试使用LoadBalancer而不是NodePort,它会为我创建一个按预期工作的新 ELB。

我不确定这是否是我想要在这里实现的正确方法。如果有一种方法可以使用带有 NodePort 的 Ingress 来实现相同的效果,请帮助我。