网站图像在Minikube上本地工作,但在GKE上不远程工作



我有一个网站,我最近写了一个用于使用kubernetes的部署。在用Minikube部署我的本地计算机并使用minikube service srv-website查看它时,一切正常。但是,在部署GKE并通过输入将图像曝光后,这些图像不会加载。悬停在InSepct元素中的图像路径上说"无法加载图像"。

我已经尝试将图像的路径更改,但这还没有解决问题。

<img src="./Images/A.png" class="img">

<img src="Images/A.png" class="img">

<img src="/usr/share/nginx/html/Images/A.png" class="img">

本地的前两个工作,而不是具有绝对容器路径的第三件作品。即使两者都在运行相同的图像,它们都无法在GKE上工作。

这是我的部署:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cfg-website
data:
  custom.nginx.conf: |
    server {
      listen 80 default_server;
      listen [::]:80 default_server ipv6only=on;
      root /usr/share/nginx/html;
      index index.html;
      location / {
        try_files $uri $uri/ =404;
      }
      error_page 404 /404.html;
        location = /404.html {
        root /usr/share/nginx/html;
        internal;
      }
      error_page 401 /401.html;
        location = /401.html {
        root /usr/share/nginx/html;
        internal;
      }
      # gzip compression
      gzip_vary on;
      gzip_proxied any;
      gzip_comp_level 6;
      gzip_buffers 16 8k;
      gzip_http_version 1.1;
      gzip_min_length 256;
      gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
      # gzip compression
    }
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dep-website
  labels:
    app: website
spec:
  selector:
    matchLabels:
      app: website
  template:
    metadata:
      labels: 
        app: website
    spec:
      volumes:
      - name: nginx-conf
        configMap:
          name: cfg-website
      containers:
      - name: cnt-website
        image: link/to/registry
        volumeMounts:
        - name: nginx-conf
          mountPath: /etc/nginx/conf.d
          readOnly: true
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: srv-website
  labels:
    app: website
spec:
  type: NodePort
  selector:
    app: website
  ports:
  - port: 8080
    targetPort: 80

我的入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: website-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: website-ingress
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: srv-website
          servicePort: 8080

问题不是我的网站的图像路径,而是在入口上。该入口仅将路径'/'映射到我的网站,含义链接到图像不起作用。通过搜集进入"/*"的入口路径,它已修复,因为它现在允许在网站上存在'/'的路径。

新入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: website-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: website-ingress
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: srv-website
          servicePort: 8080

最新更新