使用kubernetes卷时发生Nginx 403错误



我试图将Kubernetes卷用于Nginx,但遇到了问题。设置卷后,Nginx无法为HTML页面提供服务。我也尝试了PV和PVS,这次也得到了同样的错误。

nginx.yml

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels: 
app: nginx 
spec: 
replicas: 2
selector: 
matchLabels: 
app: nginx
template:
metadata: 
labels:
app: nginx
spec: 
volumes:
- name: nginxhtml
# persistentVolumeClaim: 
#   claimName: pvc
hostPath:
path: /home/amjed/Documents/SPS/k8s/mongo/mnt
containers:
- name: nginx
image: nginx
volumeMounts:
- name: nginxhtml 
mountPath: /usr/share/nginx/html

ports: 
- containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector: 
app: nginx
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80

首先,创建要安装在minikube:中的文件夹

dobrucki@minikube:~$ minikube ssh
Last login: Tue Jan 11 13:54:50 2022 from 192.168.49.1
docker@minikube:~$ ls -l 
total 4
drwxr-xr-x 2 docker docker 4096 Jan 11 13:56 nginx-mount

该文件夹是Pods中映射到/usr/share/nginx/html的文件夹,因此当您连接到服务时,将显示您粘贴在此处的文件。请确保该文件夹中有一些.html文件,否则会出现403错误。对我来说,示例index.html是这样的:

<html>
<head>
</head>
<body>
<h1>Hello World<h1>
</body>
</html>

您还需要在部署清单中添加securityContextfsGroup,以便/usr/share/nginx/html归nginx用户(101uid(所有。

然后,使用以下方法应用部署和LoadBalancer资源:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels: 
app: nginx 
spec:
replicas: 2
selector: 
matchLabels: 
app: nginx
template:
metadata: 
labels:
app: nginx
spec:
securityContext:
fsGroup: 101
volumes:
- name: nginxhtml
hostPath:
path: /home/docker/nginx-mount
containers:
- name: nginx
image: nginx
volumeMounts:
- name: nginxhtml 
mountPath: /usr/share/nginx/html       
ports: 
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector: 
app: nginx
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80

之后,您可以检查内容是否正确提供

dobrucki@minikube:~$ curl $(minikube service nginx-service --url)
<html>
<head>
</head>
<body>
<h1>Hello World<h1>
</body>
</html>

如果你还有其他问题,请告诉我。

  1. 将副本计数减少到1
  2. 验证/home/amjed/Documents/SPS/k8s/mongo/mnt位置是否有效,并且可以从吊舱访问

最新更新