我有一个网站,我最近写了一个用于使用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