Apache2 正在创建 /var/lock/apache2.XXXXXXXXXX
Apache2 creating /var/lock/apache2.XXXXXXXXXX
我正在将我的应用程序部署在集群中只读的 kubernetes pod 中。
此外,在 entrypoint.sh 中,我正在使用
启动 apache2 服务器
apachectl -D FOREGROUND
这试图在只读 pod 中创建一些文件夹导致此错误:
mktemp: failed to create directory via template '/var/lock/apache2.XXXXXXXXXX': Read-only file system
chmod: missing operand after '755'
我怎样才能避免这种情况。请注意,我已尝试在 docker 图像创建时间创建此 tmp 文件并应用该图像,但它仍然给出相同的错误。
我认为您无法阻止 Apache 创建此文件。 DefaultRuntimeDir directive 改变了它的位置,但是你不能阻止它创建它的锁文件。
不过,您可以做的是在您的 pod 中安装一个 emptyDir
volume。这是临时可写 pod-local 存储。这将使您可以在 read-only 容器文件系统中创建 read-write 个“孤岛”。
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
volumes:
- name: apache-var-lock
emptyDir: {}
containers:
- image: httpd
volumeMounts:
- name: apache-var-lock
mountPath: /var/lock
我正在将我的应用程序部署在集群中只读的 kubernetes pod 中。 此外,在 entrypoint.sh 中,我正在使用
启动 apache2 服务器apachectl -D FOREGROUND
这试图在只读 pod 中创建一些文件夹导致此错误:
mktemp: failed to create directory via template '/var/lock/apache2.XXXXXXXXXX': Read-only file system
chmod: missing operand after '755'
我怎样才能避免这种情况。请注意,我已尝试在 docker 图像创建时间创建此 tmp 文件并应用该图像,但它仍然给出相同的错误。
我认为您无法阻止 Apache 创建此文件。 DefaultRuntimeDir directive 改变了它的位置,但是你不能阻止它创建它的锁文件。
不过,您可以做的是在您的 pod 中安装一个 emptyDir
volume。这是临时可写 pod-local 存储。这将使您可以在 read-only 容器文件系统中创建 read-write 个“孤岛”。
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
volumes:
- name: apache-var-lock
emptyDir: {}
containers:
- image: httpd
volumeMounts:
- name: apache-var-lock
mountPath: /var/lock