【问题标题】:Minikube IP and Ingress Address are different. How to access services routed through IngressMinikube IP 和 Ingress Address 不同。如何访问通过 Ingress 路由的服务
【发布时间】:2021-11-25 19:41:27
【问题描述】:

Minikube 部署在 EC2 实例中。 Kubernetes 仪表板在 Minikube 中部署为集群 ip 服务

Nginx-Ingress-Controller 部署为 NodePort 服务。 入口 YAML 文件如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: "/$1"
  name: ingress-resource
spec:
  rules:
   - http:
      paths:
      - path: /kubedashboard
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

入口地址是:

Minikube IP 为:

Minikube IP 和 Ingress Address 不同。我没有在 Ingress.yaml 中提及任何主机。

Ingress 和 Kubernetes 仪表板部署在同一个命名空间中:kubernetes-dashboard。
我应该如何通过 Ingress 访问 Kubernetes 仪表盘?

我想通过以下方式访问:

curl https://localhost:NodePort/kubedashboard --insecure

curl https://MinikubeIP:NodePort/kubedashboard --insecure

curl https://EC2PublicIP:NodePort/kubedashboard --insecure

【问题讨论】:

    标签: kubernetes kubernetes-ingress minikube nginx-ingress


    【解决方案1】:

    你不需要入口,ingress只用于端口80和443,如果你想使用节点端口访问仪表盘,只需将仪表盘服务类型设置为NodePort即可。

    那么你应该可以使用curl https://localhost:NodePort/ --insecure访问

    kubectl patch service kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "NodePort"}}'
    kubectl get service kubernetes-dashboard -n kubernetes-dashboard
    

    如果你真的想使用 ingress。使用下面的入口,然后您可以从 https://localhost/kubedashboard/ 访问

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: kubernetes-dashboard
      annotations:
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
        nginx.ingress.kubernetes.io/rewrite-target: /$2
        nginx.ingress.kubernetes.io/configuration-snippet: |
          rewrite ^(/kubedashboard)$ $1/ redirect;
      namespace: kubernetes-dashboard
    spec:
      ingressClassName: nginx
      rules:
      - http:
          paths:
          - path: /kubedashboard(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: kubernetes-dashboard
                port:
                  number: 443
    

    【讨论】:

    • 将 kubernetes 仪表板设置为 nodeport 服务类型可以工作。但我几乎没有其他微服务需要部署。所以想通过入口路由所有内容,而不是全部作为 nodeport 服务。
    • 为 kubernetes-dashboard 添加了入口
    猜你喜欢
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    相关资源
    最近更新 更多