无法写入kubernetes中部署的dockerised flask应用程序的静态目录中的文件

时间:2017-12-28 09:38:49

标签: docker flask kubernetes

我们有一个用python编写的flask框架的web应用程序。应用程序代码已停靠并部署在kubernetes中。

一旦用户点击API,应用程序就会写入静态目录中的文件。我无法这样做。我知道,当我使用其他API检查静态位置中的文件列表时,它不会显示该文件。请帮忙。

YAML文件如下:

apiVersion: v1
kind: ReplicationController
metadata:
  name: backend-rc
  labels:
    type: backend-type
spec:
  replicas: 32
  template:
    metadata:
      labels:
        type: backend-type
    spec:
      containers:
      - name: backend-container
        image: gcr.io/syw-msm/ts-m:pc-v1.0
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
          protocol: TCP
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

dockerfile配置如下:

FROM ubuntu:latest

RUN apt-get update -y

RUN apt-get install -y python-pip python-dev build-essential python-tk

COPY . /app

WORKDIR /app

RUN chmod -R 777 /app/static

RUN pip install -r requirements.txt

RUN pip install fbprophet

ENTRYPOINT ["/usr/bin/python"]

CMD ["app.py"]

1 个答案:

答案 0 :(得分:1)

您的定义中有32个副本。使应用程序在本地写入文件的API调用命中一个pod(副本),并且检查其存在的调用将命中另一个。预计该文件不存在。

如果将副本数量缩放为1,它将起作用。您可以尝试进行测试,但这可能不是您想要的。

如果您需要来自多个副本的r / w访问存储,则需要重新设计应用程序以使用某种形式的共享文件系统或数据库。
如果您关心该文件,无论如何这是一个好主意 - pods是短暂的,不是用于存储状态。