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