【问题标题】:k3s - ingress-nginx - Path matching does workk3s - ingress-nginx - 路径匹配确实有效
【发布时间】:2021-05-22 14:11:55
【问题描述】:

我无法匹配我在入口资源中提到的规则中的任何路径。 只有默认的“/”映射到服务,其他路径(例如 shyam.local/sample)返回:

无法获取 /sample。

这是我的入口 yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
   name: example-ingress
spec:
   rules:
    - host: "shyam.local"
      http:
          paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 3000
          - path: "/sample"
            pathType: Prefix
            backend:
              service:
                name: mongo-express-service
                port:
                  number: 8081    

不确定这是否意味着一些伤害,但我在入口中提到的默认后端中看到了一个错误 这是我对kubectl describe ingress example-ingress的输出

Name:             example-ingress
Namespace:        default
Address:          192.168.43.130
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host         Path  Backends
  ----         ----  --------
  shyam.local  
               /         my-service:3000 (10.42.0.83:3000,10.42.0.84:3000,10.42.0.85:3000 + 1 more...)
               /sample   mongo-express-service:8081 (10.42.0.62:8081)
Annotations:   <none>
Events:
  Type    Reason  Age                From                      Message
  ----    ------  ----               ----                      -------
  Normal  Sync    13m (x6 over 41m)  nginx-ingress-controller  Scheduled for sync

here 所述,我正在使用带有 k3s 的 nginx-ingress。

这是我对kubectl get all -n ingress-nginx 的输出

NAME                                            READY   STATUS      RESTARTS   AGE
pod/ingress-nginx-admission-create-bmn9s        0/1     Completed   0          59m
pod/ingress-nginx-admission-patch-6tx6l         0/1     Completed   1          59m
pod/ingress-nginx-controller-7d779d8ccf-d7ddv   1/1     Running     0          56m

NAME                                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
service/ingress-nginx-controller-admission   ClusterIP   10.43.224.186   <none>        443/TCP                      59m
service/ingress-nginx-controller             NodePort    10.43.233.81    <none>        80:32069/TCP,443:31746/TCP   59m

NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ingress-nginx-controller   1/1     1            1           59m

NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/ingress-nginx-controller-7d779d8ccf   1         1         1       56m
replicaset.apps/ingress-nginx-controller-6cb6fdd64b   0         0         0       59m

NAME                                       COMPLETIONS   DURATION   AGE
job.batch/ingress-nginx-admission-create   1/1           21s        59m
job.batch/ingress-nginx-admission-patch    1/1           22s        59m

关于这可能是什么原因的任何建议?

【问题讨论】:

    标签: nginx kubernetes nginx-ingress k3s


    【解决方案1】:

    发现问题,这是由于 Ingress 资源中缺少注释。 对于后代,这是入口资源的更新 yaml:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
       name: example-ingress
       annotations:
        # kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
       rules:
        - http:
              paths:
              - path: /sample
                pathType: Prefix
                backend:
                  service:
                    name: my-service  
                    port:
                      number: 3000
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: mongo-express-service
                    port:
                      number: 8081   
    

    【讨论】:

      猜你喜欢
      • 2021-08-31
      • 2021-05-15
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2021-10-26
      • 2022-10-13
      • 2020-02-18
      • 1970-01-01
      相关资源
      最近更新 更多