繁体   English   中英

具有集群 ip 服务和默认 nginx 的 kubernetes 入口控制器无法按预期工作

[英]kubernetes ingress controller with cluster ip service and default nginx not working as expected

有一个 kubernetes 裸机集群,它有 7 个节点。 安装的是 helm 并添加了 helm repo

什么工作: https : //matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-ingress-guide-nginx-example.html

我能够访问前面提到的 dns A 记录上的苹果和香蕉位置。

当我使用端口 80 和 cluster-ip 类型的服务部署默认 nginx 映像时,以下 nginx-ingress 资源不起作用

kubectl 运行 nginx --image=nginx ; kubectl 暴露 pod nginx --port=80

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-test
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: kubernetes.somename.lan
    http:
      paths:
        - path: /test
          pathType: Prefix
          backend:
            serviceName: nginx
            servicePort: 80

我在日志中看到该文件正在部署在 nginx-ingress 映像中,与 apple 和 bananan ingress 条目相比,没有看到任何奇怪的东西。 我能想到的唯一区别是入口控制器和 nginx 图像是使用端口 80 的机器人

所以我需要的是,当我访问http://somelan.lan/test 时,我最终会到达 nginx 服务器的占位符(可通过 nginx 服务访问)

问题:我如何在路径 /test 下的 A dns 记录上访问 nginx 提前谢谢

提供的苹果/香蕉示例工作正常,因为 pod 对路径不敏感。 它不会对路径更改做出反应(忽略路径)。 而对于nginx ,则正好相反。

该博客的注释有误,缺少nginx前缀。 这是您使用的那个:

ingress.kubernetes.io/rewrite-target

根据文档,这是正确的:

nginx.ingress.kubernetes.io/rewrite-target

好的,经过研究,我发现了如何解决这个问题。 希望这可以帮助任何人https://www.reddit.com/r/kubernetes/comments/j2neuf/nginxingress_path_routing/

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-precious
  annotations:
    nginx.org/rewrites: "serviceName=nginx-ingress rewrite=/;"
spec:
  rules:
  - host: kubernetes.somelan.lan
    http:
      paths:
      - path: /test1
        backend:
          serviceName: nginx-ingress
          servicePort: 80

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM