当前位置: 首页 > 面试题库 >

Kubernetes部署只读文件系统错误

甄云
2023-03-14
问题内容

我在Kubernetes上部署Airflow时遇到错误(正是这个版本的Airflow https://github.com/puckel/docker-
airflow/blob/1.8.1/Dockerfile
)关于将权限写入文件系统。

窗格的日志中显示的错误是:

sed: couldn't open temporary file /usr/local/airflow/sed18bPUH: Read-only file system
sed: -e expression #1, char 131: unterminated `s' command
sed: -e expression #1, char 118: unterminated `s' command
Initialize database...
sed: couldn't open temporary file /usr/local/airflow/sedouxZBL: Read-only file system
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/airflow/configuration.py", line 769, in
    ....
    with open(TEST_CONFIG_FILE, 'w') as f:
IOError: [Errno 30] Read-only file system: '/usr/local/airflow/unittests.cfg'

看来文件系统是只读的,但我不明白为什么会这样。我不确定这是否是 Kubernetes的错误配置 (我是否需要Pod专用的RBAC?不知道)还是
Dockerfile 出现问题。

部署文件如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: airflow
  namespace: test
spec:
  replicas: 1
  revisionHistoryLimit: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: airflow
    spec:
      restartPolicy: Always
      containers:
      - name: webserver
        image: davideberdin/docker-airflow:0.0.4
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 1
            memory: 1Gi
          requests:
            cpu: 50m
            memory: 128Mi
        securityContext:  #does not have any effect
          runAsUser: 0    #does not have any effect
        ports:
        - name: airflow-web
          containerPort: 8080
        args: ["webserver"]
        volumeMounts:
          - name: airflow-config-volume
            mountPath: /usr/local/airflow
            readOnly: false #does not have any effect
          - name: airflow-logs
            mountPath: /usr/local/logs
            readOnly: false #does not have any effect
      volumes:
      - name: airflow-config-volume
        secret:
          secretName: airflow-config-secret
      - name: airflow-parameters-volume
        secret:
          secretName: airflow-parameters-secret
      - name: airflow-logs
        emptyDir: {}

知道如何使文件系统可写吗?容器以 USER气流的 形式运行,但我认为该用户具有root特权。


问题答案:
    volumeMounts:
      - name: airflow-config-volume
        mountPath: /usr/local/airflow
  volumes:
  - name: airflow-config-volume
    secret:
      secretName: airflow-config-secret

是您的问题的根源,有两个原因:首先,您已通过将秘密秘密直接卷装到映像上,将其秘密存储到该映像需要目录拥有的位置,从而砸碎了气流用户的主目录。airflow

另外,尽管我必须启动一个集群以确认100%,但我很确定Secret卷装载-我 认为 他们的ConfigMap朋友-
是对Pod文件系统的只读投影;这种怀疑肯定符合您的经验。当然,不希望这些卷的更改传播回到kubernetes集群中,所以为什么假装不然。

如果您想继续尝试这种事情,那么实际上您确实会对投影到defaultMode文件 中的 文件
产生影响volumeMount,因此可以将它们设置为0666,但请确保一定要注意。到目前为止,简短的版本不适合$AIRFLOW_HOME使用卷安装。



 类似资料:
  • 问题内容: File mediaDir = new File(“media”); if (!mediaDir.exists()){ mediaDir.createNewFile(); mediaDir.mkdir(); 尝试在手机内部存储器中写入文件,但会引发错误: java.io.IOException:只读文件系统 问题答案: 猜猜/ data / data不是外部存储。您需要具有root用户

  • 问题内容: 我正在尝试在Android系统上写入一个简单的文本文件。这是我的代码: 但是,此代码会产生“ java.io.IOException:打开失败:EROFS(只读文件系统)”错误。我尝试将权限添加到清单文件中,如下所示,但未成功: 有人知道问题是什么吗? 问题答案: 由于您尝试将文件写入根目录,因此需要将文件路径传递到文件目录。 例

  • 我在Kubernetes(GKE和kubeadm)上启动了MongoDB副本集。我没有遇到任何问题的豆荚进入储藏室。然而,当我使用Helm部署相同时,我面临这个问题。当我运行此命令时-( kubectl Description po Mongodb-Shard1-0--namespace=Kube-System) (这里,mongodb-shard1-0是创建的第一个也是唯一一个pod(在所需的三

  • 环境说明 CentOS 7.4 购买自阿里云普通的 ECS 华南地区(如果你是购买美国地区的服务器,则直接使用 kubespray 原项目,那些镜像地址不用修改,其他照着文档即可) 所有机子都是干净的不需要先安装 Docker 等其他容器相关的东西 机器简称 内网 IP 地址 部署软件 系统环境 硬件配置 操作机 172.18.243.242 ansible CentOS 7.4 1 vCPU +

  • Docker image编译成功,但从Lambda运行时由于其只读文件系统而失败。 Luminati proxy为其代理管理器提供了docker集成。我复制了他们的docker文件,并将其附加到我自己的docker文件中,以便向AWS Lambda推出一个脚本。docker映像的构建成功,但在推送到Lambda时,由于只读文件系统错误而失败: 检查trackback后,错误集中在proxy\u m

  • 我试图在Kubernetes集群上部署RabbitMQ,并使用initcontainer从ConfigMap复制一个文件。但是,POD处于运行状态后,文件不会复制。 最初,我尝试不使用init容器,但我得到了一个错误,如“触摸:不能触摸'/etc/Rabbitmq/rabbitmq.conf':只读文件系统” 文件“definitions.json”应复制到/etc/reabbitmq文件夹。我遵