问题标签 [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 - 如何获取运行我的 Web 应用程序以服务当前用户请求的容器的 ID/名称
我们正在使用 Dockers 和 Kubernetes 来容器化我的 .Net Web 应用程序并扩展到 8-9 个副本。所以我们安装了 Dockers(在我的 Win 10 机器上)并使用了 Linux 容器。
编排由 Kubernetes 完成。我想获取运行我的 Web 应用程序以服务当前用户请求的容器的名称/ID。
找不到从我的 .Net Web 应用程序中获取容器 ID/名称的方法。请分享您对此的看法。
问候
google-cloud-platform - 在 GKE 上使用 NGINX 入口控制器的奇怪之处
为了在 GKE 上公开我们的应用程序,我们一直在使用利用 google L7 负载均衡器的“gce”入口。由于各种原因,我们希望切换到 TCP 负载均衡器公开的 Nginx 控制器。设置工作正常,但有一些奇怪的工件。
我们在集群上配置了许多入口,它们都可以从上述 99.99.99.99 ip 地址获得。
虽然设置工作正常,但 spec.status.loadBalancer.ingress ips 的存在让我感到困惑。这些是集群的外部 IP 地址。我在这里配置错误了吗?似乎已经创建了一个 TCP 负载均衡器来响应 yaml 中描述的这个 loadBalancer 对象。我担心在谷歌云中形成“负载均衡器”的对象让我感到困惑。这是一些似乎相关的输出。
这对我来说似乎很奇怪。这是预期的行为吗?难道我做错了什么?
go - http.HandleFunc 不工作
我正在开发一个托管在谷歌云上的 Kubernetes 上的应用程序,它使用 Ingress 来管理到每个服务的路由,然后在每个服务内部都有一些使用 golang 的额外路由。
我的问题是:当我尝试向我发送 API 请求时,/api/auth/healthz
我希望到达该statusHandler()
函数,但我总是点击该requestHandler()
函数,即使我在那里有一个 http.HandleFunc:http.HandleFunc("/healthz", statusHandler)
这是我的代码
这是我的入口代码:
根据Kubernetes 的文档,应该像他们所拥有的那样工作,这与我的实现类似:
kubernetes - 多个命名空间的基于 Kubernetes 路径的路由
环境:我有一个 kubernetes 集群,其中设置了“dev”、“sit”和“prod”的命名空间。在这些命名空间中的每一个中,我都有多个类型的服务:LoadBalancer,它们针对 dockerised 应用程序的特定部署(我有多个应用程序),因此我可以通过使用我想要的任何命名空间的服务的公开 IP 地址来访问其中的每一个. 示例服务看起来像这样非常简单:
问题:我现在希望能够支持所有应用程序的多个版本(ip:/v1/ 、ip:/v2/等),以允许用户在他们准备好并且我已经准备好时迁移到新版本尝试按照本指南实施基于路径的路由。我设法重组了我的架构,以便我拥有 ReplicationControllers 和一个入口,它查看路由到正确服务的路径规则。
如果我只有一个公开的服务和一个命名空间,这似乎可行,因为我只有生产环境的 DNS 主机名,并且想将服务的单个 IP 地址用于其他环境,我不知道如何为没有主机名的服务指定入口规则。
我可以为每个环境使用一个负载均衡器,并使用基于路径的路由来为 dev 和 sat 路由到每个不同的服务,这并不理想,因为要访问任何服务,我们现在必须使用类似 ip/application1 和 ip/application2 的东西而不是直接使用各个应用的服务ip地址。但我最大的问题是,当我按照指南在我的 SIT 命名空间中创建入口、replicationController 和服务时,它开始影响我其他两个环境中的负载均衡器服务(据我所知,kubernetes 有时会尝试使用来自我的 DEV 服务上的 SIT 环境,因此会失败,其他时候它会使用 GCE 默认配置并且可以工作)。
我尝试添加 arg "- --watch-namespace=sit" 以将入口控制器的范围限制为仅影响坐,但它似乎不起作用。
kubernetes - GKE Ingress:http 状态码 413 请求实体太大
我们apiVersion: extensions/v1beta1
在 Google Kubernetes Engine 中有默认 Ingress 为多个 Pod 提供服务。当我们单击链接时,问题出现在我们的网站上,该链接将通过相同的 Ingress 并具有较大的标头大小。它适用于较小的标题大小。
我尝试切换到 ingress-nginx 并client_max_body_size
使用 annotation/configmap进行修改,proxy-body-size: "500m"
但没有成功。我们将 Kubernetes 版本1.7.12-gke.1
用于主节点和1.7.10-gke.0
节点。
是否有任何解决方案可以直接修改允许的标头大小?我没主意了。
kubernetes - 是否可以在不停机的情况下重新配置在 Kubernetes 中运行的 Ingress?
我们目前面临以下情况:
我们的计划是将 service.domain.com 无缝重定向到 service_new_one。现在的想法是编辑 Ingress1 以指向 service_new_one ,如下所示:
我们的经验是,一旦我们更改 Ingress1_legacy 的配置,对 service.domain.com 的调用就会导致 502。这种情况持续了足够长的时间,我们可以更好地回滚到原始配置。
那么这是一个可行的策略吗?我们的假设是否正确,即 Ingress 中服务路由的更改配置应该允许无缝、立即迁移到其他服务?或者 Ingress 配置的更改通常会导致负载平衡的一些停机时间?
azure - Azure ACS - 如何使用内部负载均衡器创建入口控制器
我想在我的 ACS 集群中创建入口控制器来访问服务。
使用 helm 我可以实现这一点(使用以下命令),但入口控制器通过外部负载均衡器暴露于互联网。
集群中的所有服务都是内部的,不需要暴露在互联网上。它们将从在同一 vnet 中运行的应用程序访问。
如何创建一个不公开但可以通过内部负载均衡器访问的入口控制器?
kubernetes - 用于大文件上传的 Nginx Ingress 控制器 502 错误网关
我们最近从 nginx 入口控制器从 0.8.2 升级到 0.11.0,并且在上传大约 10 MB 或更高的大文件时开始出现 502 bad gateway 错误,我们通过configmap 中的proxy-body-size将client_max_body_size设置为500m和验证 了它的设置。大约 5-6 MB 的较小文件可以正常工作。
日志中没有错误,只有这些消息。
已编辑 - [已编辑] - - [25/Mar/2018:02:08:49 +0000] "POST /redacted/upload HTTP/1.1" 000 0 " https://redacted/ " "Mozilla/5.0 (Windows NT 10.0 ; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" 3371263 10.850 [uploader-443] ----
和
[警告] 30684#30684: *42090 客户端请求正文缓冲到临时文件 /var/lib/nginx/body/0000000482,客户端:已编辑,服务器:已编辑,请求:“POST /redacted/upload HTTP/1.1” ,主持人:“已编辑”,推荐人:“ https://redacted/ ”
代理服务器是 tomcat,请求不会发送到 tomcat。我们尝试增加:
- 超时
- 代理缓冲区
- proxy_buffer_size
但没有任何效果。
回到0.8.2版本解决了这个问题。
更新 1:nginx.conf 片段
位置/已编辑/ {
port_in_redirect 关闭;
设置 $proxy_upstream_name "redacted-443";
……
……
client_max_body_size "500m";
docker - Nginx Ingress 在所有自定义命名空间中寻找服务
我有三个命名空间 dev、test 和 staging。test 和 staging 中没有 pod。在开发中,我有 nginx、入口和前端服务。对于对 nginx 的所有请求,它都会转发到前端服务。
但问题是开发中的 nginx 也试图在测试和暂存命名空间中找到前端服务。它在 3 个命名空间之间进行循环。所以有时页面正在加载,有时是 503 错误。
这是入口:
这是nginx的日志:
kubernetes - 具有多个目标重写的 kubernetes 入口
通常入口重写目标的工作方式如下:
这将重写服务名称的目标,因为它们位于根目录中。所以如果我有这个:
我的服务将在/
. 但是,我希望我的服务front-main
发送 root/
并让服务器back-main
发送/someotherpath/
. 我怎样才能做到这一点?
是否有类似以下行的内容?
我似乎在文档中找不到答案。