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

时间:2020-10-19 22:00:58

标签: nginx kubernetes nginx-ingress

有一个具有7个节点的kubernetes裸机集群。 已安装头盔并添加了头盔仓库

有效的方法: 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映像中部署,与苹果和香蕉入口条目相比,没有看到任何奇怪的东西。我唯一能想到的区别是入口控制器和Nginx映像是使用端口80进行漫游的。

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

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

2 个答案:

答案 0 :(得分:0)

提供的苹果/香蕉示例正在运行,因为吊舱对路径不敏感。它不会对路径更改做出反应(忽略路径)。而对于nginx来说则完全相反。

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

ingress.kubernetes.io/rewrite-target

根据docs,这是正确的密码:

nginx.ingress.kubernetes.io/rewrite-target

答案 1 :(得分:0)

好的,经过研究,我发现了解决方法。 希望这对任何人有帮助 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