【问题标题】:Ingress not showing up in namespace入口未显示在命名空间中
【发布时间】:2021-09-12 23:09:11
【问题描述】:

我使用了官方的 Kubernetes 仪表板,并试图为仪表板设置入口。我尝试将入口放入 Kubernetes-dashboard 命名空间,但是当我尝试 kubectl get all -n kubernetes-dashboard 时入口不会出现。我仍然可以使用kubectl get ingress -n kubernetes-dashboard 来描述同一命名空间中的入口,但注释会显示在<none> 中。谁能帮帮我?

这是我的入口 yaml 文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: 
  name: dashborad-ingress
  namespace: kubernetes-dashboard
spec:
  rules:
  - host: dashboard.com
    http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service: 
            name: kubernetes-dashboard
            port: 
              number: 443

还有kubectl desribe ingress -n kubernetes-dashboard的输出

Name:             dashborad-ingress
Namespace:        kubernetes-dashboard
Address:          192.168.49.2
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host           Path  Backends
  ----           ----  --------
  dashboard.com  
                    kubernetes-dashboard:443 (172.17.0.6:8443)
Annotations:     <none>
Events:
  Type    Reason  Age                 From                      Message
  ----    ------  ----                ----                      -------
  Normal  Sync    4m7s (x5 over 24m)  nginx-ingress-controller  Scheduled for sync

任何帮助将不胜感激。

【问题讨论】:

  • Ingress 定义没有定义注解,那么描述的时候有 有什么问题呢? Ingress 是否工作,例如.. 仪表板是否以名称 dashboard.com 和 Ingress Controller 的 LoadBalancer IP 提供服务?

标签: kubernetes kubernetes-ingress


【解决方案1】:

显示为&lt;none&gt; 的注释似乎可以纠正行为。您尚未在附加的 yaml 文件中定义任何内容,因此应显示 &lt;none&gt;。 我用一个注释创建了简单的入口,向您展示它是如何工作的。看看我的metadata 部分:

metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1

当我使用命令描述我的入口时:kubectl describe ingress 我在输出中有这一行:

Annotations:  nginx.ingress.kubernetes.io/rewrite-target: /$1

但是,我在完全不同的地方看到了问题。当你描述入口时,你有这行:

Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)

当您尝试访问未定义规则或未正确配置的服务时,default-backend 负责提供404-page-not-found 错误页面。

根据您设置集群的方式,解决方案可能会有所不同。但是,如果您使用的是裸机和 Minikube,您可以尝试启用入口插件:

minikube addons enable ingress

minikube addons enable ingress --alsologtostderr

此插件的另一种解决方案:

kubectl apply -f https://raw.githubusercontent.com/roelal/minikube/5093d8b21c0931a6c63fa448538761b4bf100ee0/deploy/addons/ingress/ingress-rc.yaml
kubectl apply -f https://raw.githubusercontent.com/roelal/minikube/5093d8b21c0931a6c63fa448538761b4bf100ee0/deploy/addons/ingress/ingress-svc.yaml

您也可以像这样将defaultBackend 添加为 Ingress 定义的一部分

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: default-backend-ingress-example
spec:
  defaultBackend:
    service:
      name: hotel-svc
      port:
        number: 80

另见:

【讨论】:

猜你喜欢
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 2017-10-19
相关资源
最近更新 更多