标签: kubernetes-ingress

将Traefik中的一个域重定向到另一个域

根据文档,你应该能够让Traefik使用以下方法执行302重定向:

  • traefik.ingress.kubernetes.io/redirect-regex
  • traefik.ingress.kubernetes.io/redirect-replacement

我的目标是简单地www.从地址中删除.

这是我尝试过的,但我找不到404服务.

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: www-redirect
  namespace: public
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/redirect-regex: ^https?://www.example.com/(.*)
    traefik.ingress.kubernetes.io/redirect-replacement: https://example.com/$1
spec:
  rules:
  - host: www.example.com
Run Code Online (Sandbox Code Playgroud)

不幸的是,文档没有明确说明如何使用它们.在撰写本文时,唯一的谷歌就是文档(上图).

我目前的工作(假设它将有助于解释问题)是将www.流量路由到返回302的nginx.

server {
    listen       80;
    server_name  www.example.com;
    return 302 https://example.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

这看起来有点矫枉过正.

kubernetes traefik kubernetes-ingress

13
推荐指数
1
解决办法
1696
查看次数

如何使用client_disconnected_before_any_response调试失败的请求

我们有一个由kubernetes ingress创建的HTTP(s)Load Balancer,它指向由运行nginx和Ruby on Rails的pod组成的后端.

看一下负载均衡器日志,我们检测到越来越多的请求,响应代码为0statusDetails= client_disconnected_before_any_response.

我们试图理解为什么会发生这种情况,但我们没有找到任何相关的东西.nginx访问或错误日志中没有任何内容.

这种情况发生在从GET到POST的多种请求中.

我们还怀疑有时尽管请求记录了该错误,但请求实际上是传递给后端的.例如,我们看到了PG :: UniqueViolation错误,因为在我们的注册终端中,两次发送了令人满意的注册请求到后端.

任何形式的帮助将不胜感激.谢谢!


 更新1

这里要求的入口资源的yaml文件:


 更新2

我已经创建了一个基于日志的Stackdriver度量标准,用于计算出现此行为的请求数.这是图表:

图表

大峰大致匹配这些kubernetes事件的时间戳:

事件

完整错误: Readiness probe failed: Get http://10.48.1.28:80/health_check: net/http: request canceled (Client.Timeout exceeded while awaiting headers)"

因此有时候后端后面的pod的准备探测失败了,但并非总是如此.

这是readinessProbe的定义

readinessProbe:
  failureThreshold: 3
  httpGet:
    httpHeaders:
    - name: X-Forwarded-Proto
      value: https
    - name: Host
      value: [redacted]
    path: /health_check
    port: 80
    scheme: HTTP
  initialDelaySeconds: 1
  periodSeconds: 30
  successThreshold: 1
  timeoutSeconds: 5
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine google-cloud-networking kubernetes-ingress

13
推荐指数
1
解决办法
439
查看次数

如何让Kubernetes Ingress Port 80在裸机单节点集群上工作

我有一个v1.11.0用kubeadm创建的裸机kubernetes()集群,工作正常,没有任何问题.使用calico网络并使用kubectl taint nodes命令将其设为单节点集群.(单个节点是必需的).

我需要在主机端口80上运行mydockerhub/sampleweb静态网站图像.假设运行此kubernetes的ubuntu服务器的IP地址是192.168.8.10.

如何使我的静态网站可用192.168.8.10:80或在本地DNS服务器上映射到它的主机名?(例如:) frontend.sampleweb.local:80.后来我需要在映射到另一个子域的不同端口上运行其他服务.(例如:backend.sampleweb.local:80哪些路由到端口8080上运行的服务).

我需要知道:

  1. 没有负载均衡器,我能实现这一目标吗?
  2. 创建需要哪些资源?(入口,部署等)
  3. 群集需要哪些其他配置?(网络政策等)

    如果提供了样本yaml文件,我们非常感激.

我是kubernetes世界的新手.我得到了样本kubernetes部署(如袜子店)端到端工作没有任何问题.我尝试使用NodePort来访问该服务,但不是在不同的端口上运行它,而是需要在主机上运行它确切的端口80.我尝试了许多入口解决方案但没有工作.

我的设置截图:
在此输入图像描述

kubernetes kubernetes-ingress

12
推荐指数
1
解决办法
3894
查看次数

CORS 规则 nginx-ingress 规则

我需要允许来自多个来源的请求:http://localhost:4200http://localhost:4242,等,nginx的上,入口版本1.7.1。但我无法为多个来源做到这一点,因为nginx.ingress.kubernetes.io/cors-allow-credentials: true不会与nginx.ingress.kubernetes.io/cors-allow-origin: "*". 它会导致浏览器生成 CORS 错误。也许有人有避免此错误的解决方案?

这是我的配置

 annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "*"
nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS, DELETE"
nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,X-CustomHeader,X-LANG,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Api-Key,X-Device-Id,Access-Control-Allow-Origin"
Run Code Online (Sandbox Code Playgroud)

从源“ http://localhost:4200 ”访问“ https://stage.site.com/api/session ”的XMLHttpRequest已被 CORS 策略阻止:“Access-Control-Allow-Origin”的值当请求的凭据模式为“包含”时,响应中的标头不得为通配符“*”。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

cors kubernetes kubernetes-ingress

12
推荐指数
3
解决办法
2万
查看次数

是否可以让 Ingress 指向另一个命名空间中的服务?

我想要做的是在default命名空间中拥有一个服务,并在其他命名空间中拥有指向该服务的入口。我尝试实现如下所示的服务和 Ingress,但没有成功。

kind: Service
apiVersion: v1
metadata:
  name: serviceX
  namespace: default
spec:
  type: ExternalName
  externalName: serviceX.default.svc.cluster.local
ports:
- port: 123


kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: web-ingress-test-vpndev
  namespace: my-namespace
spec:
  tls:
  - hosts:
    - abc.my-namespace.domain.com
    secretName: tls-secret-my-namespace
  rules:
  - http:
      paths:
      - path: "/"
        backend:
          serviceName: serviceX
          servicePort: 123
status:
  loadBalancer:
    ingress: {}
Run Code Online (Sandbox Code Playgroud)

我知道我可以在每个命名空间中实现该服务,但我想知道是否可以拥有单个服务。如果我尝试externalName在入口的处理程序中输入服务的名称backend->serviceName,则会收到错误消息,指出服务的名称只能包含数字、字母和“-”。

kubernetes kubernetes-ingress kubernetes-service

12
推荐指数
2
解决办法
1万
查看次数

Terraform AWS EKS ALB Kubernetes Ingress 不会创建侦听器或目标组

我正在尝试使用 Terraform 资源创建一个带有 ALB 入口的 AWS EKS 集群。

该文档表明入口将自动创建一个带有关联侦听器和目标组的负载均衡器。

Kubernetes Ingress 创建 ALB 负载均衡器、安全组和规则,但不创建目标组或侦听器。我曾尝试使用网关或应用程序子网,但没有任何区别。我尝试设置安全组,但 ALB 设置并使用了它自己的自我管理的安全组。

我依赖本指南

ALB 的卷曲让我感到

无法连接到 de59ecbf-default-mainingre-8687-1051686593.ap-southeast-1.elb.amazonaws.com 端口 80:连接被拒绝

我分别创建了 IAM 角色和 ACM 证书,因为 AWS 对这些有配额限制。我的 EKS 集群和节点角色是标准的,节点角色附加了最新的策略。

我曾经kubectl单独应用 kubernetes 入口,但结果相同。它创建 ALB 和一个安全组,其中包含端口规则,但没有目标组或侦听器。

当我将集群端点粘贴aws eks describe-cluster --name my-tf-eks-cluster --query "cluster.endpoint"到浏览器中时,我得到以下信息:

{ "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "forbidden: User "system:anonymous" cannot get path "/ "", "reason": "Forbidden", "details": { }, "code": 403 }

此外,入口没有 IP 地址。 …

terraform kubernetes-ingress terraform-provider-aws amazon-eks

12
推荐指数
1
解决办法
2930
查看次数

Kubernetes 服务未在 Pod 之间均匀分配流量

我正在使用 Kubernetes v1.20.10 裸机安装。它有1个主节点和3个工作节点。该应用程序只是提供 HTTP 请求。

我正在基于 (HPA) Horizo​​ntal Pod Autoscaler 扩展部署,我注意到负载在 Pod 之间分布不均匀。只有第一个 Pod 获得了 95% 的负载,而另一个 Pod 的负载非常低。

我尝试了这里提到的答案,但没有成功:Kubernetes service does not distribution requests Between pods

calico kubernetes kubernetes-ingress kubernetes-service hpa

12
推荐指数
1
解决办法
4316
查看次数

在 Kubernetes 的 Nginx Ingress 对象中设置代理传递的最佳方法是什么

目前,我正在尝试将位于 Apache 负载平衡服务器上的站点迁移到我的 k8s 集群。然而,该应用程序使用 proxypass 和 proxyreversepass 进行了奇怪的设置,如下所示:

ProxyPass /something http://example.com/something
ProxyPassReverse /something http://example.com/something
Run Code Online (Sandbox Code Playgroud)

我想在 Nginx Ingress 中模仿这个

首先,我尝试使用rewrite-target注释,但是它不会保留Location让应用程序再次运行所必需的标头。

然后我尝试proxy-redirect-to/from在特定位置块中放置注释,如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gpg-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-redirect-from: http://originalapp.com/something
    nginx.ingress.kubernetes.io/proxy-redirect-to: http://example.com/something
spec:
  rules:
  - host: example.com
    http:
      paths:
        - path: /something
          backend:
            serviceName: example-com
            servicePort: 80
Run Code Online (Sandbox Code Playgroud)

我希望能够改用自定义proxy_pass变量,但似乎不可能。

模仿此代理通行证的最佳方法是什么?

proxy nginx kubernetes kubernetes-ingress nginx-ingress

11
推荐指数
1
解决办法
2万
查看次数

在 K8s 上使用单个 LoadBalancer 公开多个 TCP/UDP 服务

尝试弄清楚如何在 Kubernetes 上使用单个 LoadBalancer 公开多个 TCP/UDP 服务。假设服务是 ftpsrv1.com 和 ftpsrv2.com,分别在端口 21 上提供服务。

以下是我能想到的选项及其局限性:

  • 每个服务 1 LB:太贵了。
  • Nodeport :想要使用 30000-32767 范围之外的端口。
  • K8s Ingress:目前不支持 TCP 或 UDP 服务。
  • 使用 Nginx Ingress 控制器:这又是一对一的映射
  • 找到这个自定义实现:但它似乎没有更新,上次更新几乎是一年前。

任何意见将不胜感激。

kubernetes kubernetes-ingress

11
推荐指数
3
解决办法
8176
查看次数

尽管作为 VM 运行,Minikube Kubernetes 不允许在 Mac 上进入

我跑了minikube start --vm=true哪个输出:

  minikube v1.12.2 on Darwin 10.15.5
?  Using the docker driver based on existing profile
?  Your system has 16384MB memory but Docker has only 1991MB. For a better performance increase to at least 3GB.

    Docker for Desktop  > Settings > Resources > Memory


  Starting control plane node minikube in cluster minikube
  Restarting existing docker container for "minikube" ...
  Preparing Kubernetes v1.18.3 on Docker 19.03.8 ...
  Verifying Kubernetes components...
  Enabled addons: dashboard, default-storageclass, storage-provisioner
  Done! kubectl …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes minikube kubernetes-ingress

11
推荐指数
1
解决办法
5352
查看次数