尊敬的K8社区团队:
当我部署我的应用程序Pod时,我从nginx收到了这个错误消息。我的应用程序是一个angular6应用程序,它托管在一个nginx服务器中,该服务器被部署为EKS中的一个停靠容器。
我将我的应用程序配置为“只读容器文件系统”,但我使用的是“emptyDir”类型的“临时装载”卷和一个只读文件系统。
因此,我不确定出现以下错误的原因:
2019/04/02 14:11:29[Emerg]1#1:mkdir()“/var/cache/nginx/client_temp”失败(30:只读文件系统)nginx:[Emerg]mkdir()“/var/cache/nginx/client_temp”失败(30:只读文件系统)
我的deployment.yaml
是:
...
spec:
volumes:
- name: tmp-volume
emptyDir: {}
# Pod Security Context
securityContext:
fsGroup: 2000
containers:
- name: {{ .Chart.Name }}
volumeMounts:
- mountPath: /tmp
name: tmp-volume
image: "{{ .Values.image.name }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
capabilities:
add:
- NET_BIND_SERVICE
drop:
- ALL
securityContext:
readOnlyRootFilesystem: true
ports:
- name: http
containerPort: 80
protocol: TCP
...
Nginx.conf为:
...
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Turn off the bloody buffering to temp files
proxy_buffering off;
sendfile off;
keepalive_timeout 120;
server_names_hash_bucket_size 128;
# These two should be the same or nginx will start writing
# large request bodies to temp files
client_body_buffer_size 10m;
client_max_body_size 10m;
...
1条答案
按热度按时间mnemlml81#
您的
nginx
似乎未以根用户身份运行。从
1.12.1-r2
版本开始,nginx后台进程以用户1001
身份运行。1.12.1-r2
Nginx容器已迁移到非根容器方法。以前,容器以根用户身份运行,nginx守护进程以nginx用户身份启动。从现在开始,容器和nginx守护进程都以用户1001的身份运行。因此,运行nginx进程的用户可以写入配置文件。
这就是您无法在端口
80
上绑定的原因,必须使用端口>1000。您应该使用:
并编辑nginx.conf,使其在端口8080上侦听:
或者以根用户身份运行nginx:
command: [ "/bin/bash", "-c", "sudo nginx -g 'daemon off;'" ]