簡體   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