【问题标题】:Minikube Ingress shows 404Minikube Ingress 显示 404
【发布时间】:2021-02-05 11:03:06
【问题描述】:

我正在关注本教程:https://cloud.google.com/container-engine/docs/tutorials/http-balancer,但在 Minikube 中运行它,每个步骤都有 yml 文件:

第 1 步:部署 nginx 服务器

生产.yml:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: pwa-app-production
  labels:
    app: MyApp
spec:
  replicas: 1
  template:
    metadata:
      name: app
      labels:
        app: MyApp
        env: production      
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - name: nginx
          containerPort: 80

然后:

$ kubectl apply -f production.yml

第 2 步:将您的 nginx 部署公开为内部服务

service.yml:

kind: Service
apiVersion: v1
metadata:
  name: pwa-frontend
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
  - name: nginx
    port: 80
    protocol: TCP

然后:

$ kubectl apply -f service.yml

验证服务是否已创建并已分配节点端口:

$ kubectl get service pwa-frontend

NAME           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
pwa-frontend   10.0.0.28    <nodes>       80:30781/TCP   26m

第 3 步:创建 Ingress 资源

ingress.yml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: pwa-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  backend:
    serviceName: pwa-frontend
    servicePort: 80

然后:

$ kubectl create -f ingress.yml

第 4 步:访问您的应用程序

通过运行找出为您的应用程序服务的负载均衡器的外部 IP 地址:

$ kubectl describe ing pwa-ingress

Name:           pwa-ingress
Namespace:      default
Address:        192.168.99.100
Default backend:    pwa-frontend:80 (172.17.0.2:80)
Rules:
  Host  Path    Backends
  ----  ----    --------
  * *   pwa-frontend:80 (172.17.0.2:80)
Annotations:
  rewrite-target:   /

一切似乎都运行良好,所有信息输出似乎都与教程相对应。但是现在:

$ curl 192.168.99.100

default backend - 404

【问题讨论】:

    标签: kubernetes google-cloud-platform


    【解决方案1】:

    我假设您通过minikube addons enable ingress 部署了默认的 nginx 入口控制器。您遵循的教程专门针对 Google Container Engine,在这些集群中部署了一个不同的入口控制器,它将创建 Google Cloud Load Balancer,并且还能够公开普通的 TCP 服务。 minikube 中的 nginx 入口控制器只能处理这样的 HTTP 入口:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: pwa-ingress
      annotations:
        ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - http:
          paths:
          - path: /
            backend:
              serviceName: pwa-frontend
              servicePort: 80
    

    在您修改文件后使用kubectl replace ingress.yml 并再次尝试您的请求。

    【讨论】:

    • 感谢您的解释和解决方案,它有效。
    【解决方案2】:

    接受的答案在测试版中有点旧。这是更新的

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: pwa-ingress
      annotations:
        ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - http:
          paths:
          - path: /
            pathType: Prefix      
            backend:
              service:
                name: pwa-frontend
                port:
                  number: 80
    

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2020-11-18
      • 2021-12-17
      • 2021-11-26
      • 2021-01-29
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2019-08-29
      相关资源
      最近更新 更多