问题标签 [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.
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 地址?
docker - NGINX Plus 容器抛出错误,因为找不到 nginxplus 可执行文件
部署 nginxplus 容器时出现以下错误:
我使用了来自https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/的 nginxplus dockerfile
Pod 日志更新:
这就是我尝试检索 pod 日志时得到的结果。
请帮忙!!
nginx - 在入口主机名中使用通配符
我想使用 kubernetes 将所有 *.xxxx.com 请求重定向到 m-*.xxxx.com。我使用 nginx 进行路由。有没有办法做到这一点?
我目前在入口定义中有'*.xxxx.com',但它不接受这样的东西:'m-*.xxxx.com'
kubernetes - Kubernetes 端点为空,我可以重新启动 pod 吗?
我有一种情况,我有零个端点可用于一项服务。为了测试这一点,我特制了一个 yaml 描述符,它使用一个简单的节点服务器来设置和检索 pod 的就绪/活动状态:
节点服务器具有设置和检索活跃度和就绪度的方法。
当应用程序启动时,我可以看到创建了 3 个副本并且它们的状态已准备好。好的,那么现在我手动触发他们的准备状态,以设置为 false [从入口外部]。一个 pod 已从端点正确移除,因此没有流量路由到它[没关系,因为这是预期的行为]。当我将所有 pod 的所有就绪状态设置为 false 时,端点列表为空 [仍然是预期的行为]。
那时我无法从入口外部设置 ready=true,因为流量没有路由到任何 pod。这里有没有办法例如在 n-timer 或 n-seconds 后没有准备好时触发 Pod 的重启?或者当端点列表为空时?
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 地址。
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 错误页面:
我想我犯了一些配置错误,但无法解决。请帮助我任何方向。我很乐意提供更多细节。谢谢你。
kubernetes - GKE 是否支持带有静态 ip 的 nginx-ingress?
我一直在使用 Google Cloud Load Balancer 入口。但是,我正在尝试nginxinc/kubernetes-ingress
在 GKE 中具有静态 IP 地址的节点中安装控制器。
- 我可以在同一个集群中使用 Google 的 Cloud Load Balancer 入口控制器吗?
- 我们如何使用
nginxinc/kubernetes-ingress
静态IP?
谢谢
kubernetes - 修改 nginx 入口的命名空间时出错
我试图修改我的入口,因为我的入口控制器和入口服务在 nginx-ingress 名称空间中运行。
我尝试使用:kubectl edit ing lhingress
其中入口名称是 lhingress。它打开了一个编辑器,但是当我尝试修改然后保存它时。我得到以下错误。
您能否建议我如何将此入口指向不同的命名空间
kubernetes - 无法通过 kubernetes python 客户端删除 kubernetes 入口对象
删除入口对象时出现此错误。
这是我用来执行删除的代码片段......
我确保入口对象确实存在并具有正确的 API 版本控制。在尝试删除部署对象时遇到类似的错误!
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 来实现相同的效果,请帮助我。