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

rqdpfwrv  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(2)|浏览(122)

有一个kubernetes裸机集群,它有7个节点。已安装的是 Helm ,并添加了一个 Helm 回购补充

标签:https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-ingress-guide-nginx-example.html
我能够访问苹果和香蕉的位置上的DNS记录之前提到的。
当我使用端口为80且类型为cluster-ip的服务部署默认nginx映像时,以下nginx-ingress资源不起作用

kubectl run nginx --image=nginx ; kubectl exposed 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和banana ingress条目相比,没有看到任何奇怪的东西。我能想到的唯一区别是ingress控制器和nginx镜像是使用端口80的bot
因此,我需要的是,当我访问http://somelan.lan/test时,我将结束在nginx服务器的占位符(可通过nginx服务访问)
如何在路径/test下访问我的A dns记录上的nginx?

fiei3ece

fiei3ece1#

所提供的apple / banana示例可以正常工作,因为pod是路径不敏感的。它不会对路径更改做出React(忽略路径)。而对于nginx,则正好相反。
这个博客有一个注解错误,它缺少nginx前缀。这是你用的那个:

ingress.kubernetes.io/rewrite-target

这是正确的docs

nginx.ingress.kubernetes.io/rewrite-target
pvcm50d1

pvcm50d12#

经过研究,我发现了如何解决这个问题。希望对大家有帮助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

相关问题