当前位置: 首页 > 知识库问答 >
问题:

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

贝镜
2023-03-14

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

  • ingres-nginxhttps://kubernetes.github.io/ingress-nginx在我的局域网中,我创建了一个dns一个可以在我的局域网中解析的记录。

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

我可以访问之前提到的dns A记录上的苹果和香蕉位置。

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

kubectl run nginx——image=nginx;kubectl暴露吊舱nginx——端口=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入口条目相比没有看到任何奇怪的东西。我能想到的唯一区别是入口控制器和nginx映像是使用端口80的机器人

所以我需要的是,当我访问http://somelan.lan/test我将结束在nginx服务器的占位符(这是由nginx服务访问)

问题:如何访问路径/测试下A dns记录上的nginx谢谢

共有2个答案

禹昆
2023-03-14

好的,经过研究,我找到了解决这个问题的方法。希望这对任何人都有帮助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
陆洲
2023-03-14

提供的apple/banana示例之所以有效,是因为pod对路径不敏感。它不会对路径更改做出反应(忽略路径)。而对于nginx,它正好相反。

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

ingress.kubernetes.io/rewrite-target

根据文件,这是正确的:

nginx.ingress.kubernetes.io/rewrite-target
 类似资料:
  • 我不知道如何在Kubernetes集群(不是minikube)上设置入口控制器。我遵循的每一个nginx入口设置都产生了一个错误,控制器设置不正确。基本上,我想要一个与minikube插件等效的命令来启用入口。谢谢 编辑1- 我正在遵循中提到的安装步骤https://kubernetes.github.io/ingress-nginx/deploy/我已经尝试了baremetal、cloud和其他

  • 我基本上希望通过URL从外部访问Nginx hello页面。我已经为运行kubernetes和Nginx ingress:vps的v服务器的子域创建了一个(工作)a记录。我的域名。通用域名格式 我使用以下教程在CoreOS上通过kubeadm将Kubernetes安装为单节点集群:https://kubernetes.io/docs/setup/independent/install-kubead

  • 什么起作用了? 使用Helm(启用RBAC)部署入口控制器 集群IP服务部署 什么不起作用? null K8S入口 注释中最后应用的配置(入口描述输出)显示入口资源清单。但是,我贴在下面作为参考 附加信息 null 任何关于我可能做错了什么的建议或见解将非常感谢。

  • 我在RedHat EC2实例上安装了Minikube v1.3.1以进行一些测试。 由于nginx-ingress-控制器默认使用的端口已经在使用中,我正在尝试在部署中更改它们,但没有结果。有人能建议如何做吗? 如何知道端口已在使用? 当我使用命令kubectl-n kube system get deployment | grep nginx列出系统吊舱时,我得到: nginx入口控制器0/1

  • 我在AWS上使用kube-up.sh脚本创建了一个3节点Kubernetes集群(版本:1.5.8),遵循以下演练: https://ryaneschinger.com/blog/building-a-kubernetes-cluster-on-aws/ 我能够成功地访问集群并查看UI。命令的输出: 服务描述符: 我已经为其他3个类似的Spring Boot微服务遵循了相同的过程。 入口描述符:

  • 我试图创建一个入口控制器,它指向我通过Nodeport公开的服务。 以下是入口控制器的yaml文件(摘自https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/):