首页 > 解决方案 > 如何检查 K8s 卷是否安装正确?

问题描述

我正在测试是否可以使用 initContainer 从 S3 挂载数据。我的意图和期望是将相同的卷安装到 initContainer 和 Container 上。使用 InitContainer 将来自 S3 的数据下载到名为 /s3-data 的 mountPath 中,并且由于容器在 initContainer 之后运行,因此它可以从卷安装到的路径中读取。

但是,容器没有显示任何日志,只是说“流已关闭”。initContainer 显示从 S3 成功下载数据的日志。

我究竟做错了什么?提前致谢。

apiVersion: batch/v1
kind: Job
metadata:
  name: train-job
spec:
  template:
    spec:
      initContainers:
      - name: data-download
        image: <My AWS-CLI Image>
        command: ["/bin/sh", "-c"]
        args:
          - aws s3 cp s3://<Kubeflow Bucket>/kubeflowdata.tar.gz /s3-data
        volumeMounts:
        - mountPath: /s3-data
          name: s3-data
        env:
        - name: AWS_ACCESS_KEY_ID
          valueFrom:
            secretKeyRef: {key: AWS_ACCESS_KEY_ID, name: aws-secret}
        - name: AWS_SECRET_ACCESS_KEY
          valueFrom:
            secretKeyRef: {key: AWS_SECRET_ACCESS_KEY, name: aws-secret}
      containers:
      - name: check-proper-data-mount
        image: <My Image>
        command: ["/bin/sh", "-c"]
        args:
          - cd /s3-data
          - echo "Just s3-data dir"
          - ls
          - echo "After making a sample file"
          - touch sample.txt
          - ls
        volumeMounts:
        - mountPath: /s3-data
          name: s3-data
      volumes:
      - name: s3-data
        emptyDir: {}
      restartPolicy: OnFailure
  backoffLimit: 6

标签: kuberneteskubernetes-jobs

解决方案


You can try like the below mentioned the argument part
--- 
apiVersion: v1
kind: Pod
metadata: 
  labels: 
    purpose: demonstrate-command
  name: command-demo
spec: 
  containers: 
    - 
      args: 
        - cd /s3-data;
          echo "Just s3-data dir";
          ls;
          echo "After making a sample file";
          touch sample.txt;
          ls;
      command: 
        - /bin/sh
        - -c
      image: "<My Image>"
      name: containername

供参考: 如何使用 Kubernetes 在一个 yaml 文件中设置多个命令?


推荐阅读