在kubernetes中使用readOnlyRootFilesystem时如何免除目录?

在kubernetes中使用readOnlyRootFilesystem时如何免除目录?,kubernetes,Kubernetes,我需要阻止我的k8s pod写入根文件夹,并对/tmp dir进行豁免。我需要写信给这个目录有两个原因: 我需要写信给某个地方。它正在尝试写入/tmp和/etc/。。。和/opt/,但是它们都被阻止了,因为它在根文件夹下 我需要为liveness probe写入一个文件,但是如果整个文件系统被阻塞,那么我就不能这样做 我在gke中运行kubernetes 1.13.6-gke.13 yaml文件中的相关部分: securityContext: runAsUser: 1000 readOn

我需要阻止我的k8s pod写入根文件夹,并对/tmp dir进行豁免。我需要写信给这个目录有两个原因:

  • 我需要写信给某个地方。它正在尝试写入/tmp和/etc/。。。和/opt/,但是它们都被阻止了,因为它在根文件夹下
  • 我需要为liveness probe写入一个文件,但是如果整个文件系统被阻塞,那么我就不能这样做
  • 我在gke中运行kubernetes 1.13.6-gke.13

    yaml文件中的相关部分:

    securityContext:
      runAsUser: 1000
      readOnlyRootFilesystem: true
      runAsNonRoot: true
    

    我希望pod能够写入预定义的文件夹,可能是挂载的文件夹。

    据我所知,您希望创建一个能够访问本地目录的pod。您需要创建PV、PVC和POD

    PV定义:

    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: pv-flaskapp
      labels:
        type: local
    spec:
      storageClassName: <your-storageclass-name>
      capacity:
        storage: 3Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/opt/test_flask/app"
    
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-flaskapp
    spec:
      storageClassName: <your-storageclass-name>
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: flaskapp
    spec:
      containers:
      - image: flask:latest
        name: flaskapp
        ports:
          - containerPort: 8080
            name: flaskapp
        volumeMounts:
        - mountPath: /usr/local/flask/webapps
          name: test-volume
      volumes:
      - name: test-volume
        persistentVolumeClaim:
          claimName: pvc-flask
    
    现在,您可以检查是否一切正常:

    $ kubectl exec -it flaskapp bash
    root@flaskapp:/usr/local/flask# mkdir /usr/local/flask/webapps/sample 
    root@flaskapp:/usr/local/flask# touch /usr/local/flask/webapps/sample/testfile
    root@flaskapp:/usr/local/flask# ls /usr/local/flask/webapps/sample/
    testfile
    
    现在,当您查看主机时,您将看到新创建的文件:

    [root@master user]# ls /opt/test_flask/app/sample/
    testfile
    

    我希望它能帮助您。

    据我所知,您希望创建一个可以访问本地目录的POD。您需要创建PV、PVC和POD

    PV定义:

    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: pv-flaskapp
      labels:
        type: local
    spec:
      storageClassName: <your-storageclass-name>
      capacity:
        storage: 3Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/opt/test_flask/app"
    
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-flaskapp
    spec:
      storageClassName: <your-storageclass-name>
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: flaskapp
    spec:
      containers:
      - image: flask:latest
        name: flaskapp
        ports:
          - containerPort: 8080
            name: flaskapp
        volumeMounts:
        - mountPath: /usr/local/flask/webapps
          name: test-volume
      volumes:
      - name: test-volume
        persistentVolumeClaim:
          claimName: pvc-flask
    
    现在,您可以检查是否一切正常:

    $ kubectl exec -it flaskapp bash
    root@flaskapp:/usr/local/flask# mkdir /usr/local/flask/webapps/sample 
    root@flaskapp:/usr/local/flask# touch /usr/local/flask/webapps/sample/testfile
    root@flaskapp:/usr/local/flask# ls /usr/local/flask/webapps/sample/
    testfile
    
    现在,当您查看主机时,您将看到新创建的文件:

    [root@master user]# ls /opt/test_flask/app/sample/
    testfile
    

    我希望它能帮助您。

    为/tmp目录创建卷装载

    volumeMounts:
    - mountPath: /tmp
      name: tmp
    
    以卷计—

    volumes:
    - emptyDir: {}
      name: tmp
    

    为/tmp目录创建卷装载

    volumeMounts:
    - mountPath: /tmp
      name: tmp
    
    以卷计—

    volumes:
    - emptyDir: {}
      name: tmp
    

    请注意
    emptyDir
    使用Kubernetes节点上的存储,并有可能填满节点的OS磁盘。请注意
    emptyDir
    使用Kubernetes节点上的存储,并有可能填满节点的OS磁盘。