Minikube Ingress 显示 404

Ha *_* Ja 3 google-cloud-platform kubernetes

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

第一步:部署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
Run Code Online (Sandbox Code Playgroud)

然后:

$ kubectl apply -f production.yml
Run Code Online (Sandbox Code Playgroud)

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

服务.yml:

$ kubectl apply -f production.yml
Run Code Online (Sandbox Code Playgroud)

然后:

$ kubectl apply -f service.yml
Run Code Online (Sandbox Code Playgroud)

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

$ kubectl get service pwa-frontend

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

第 3 步:创建 Ingress 资源

入口.yml:

kind: Service
apiVersion: v1
metadata:
  name: pwa-frontend
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
  - name: nginx
    port: 80
    protocol: TCP
Run Code Online (Sandbox Code Playgroud)

然后:

$ kubectl create -f ingress.yml
Run Code Online (Sandbox Code Playgroud)

第 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:   /
Run Code Online (Sandbox Code Playgroud)

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

$ curl 192.168.99.100

default backend - 404
Run Code Online (Sandbox Code Playgroud)

Sim*_*sar 5

我假设您通过minikube addons enable ingress. 您遵循的教程专门针对 Google Container Engine,在这些集群中部署了不同的入口控制器,它将创建 Google Cloud 负载均衡器,并且还能够公开普通 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
Run Code Online (Sandbox Code Playgroud)

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