Bash Kubernetes部署:preStop不执行aws命令

Bash Kubernetes部署:preStop不执行aws命令,bash,amazon-web-services,kubernetes,minikube,kubernetes-deployment,Bash,Amazon Web Services,Kubernetes,Minikube,Kubernetes Deployment,我正试图在pod终止之前将日志转移到S3。为此,我们需要 将容器配置为具有AWS-CLI。我成功地做到了这一点 在postStart钩子中使用脚本 执行AWS S3命令将文件从主机路径传输到S3 水桶差点就有了这个 以下是我的Kube部署(在minikube上运行): apiVersion:extensions/v1beta1 种类:部署 元数据: 名称:logtransfer poc 规格: 副本:1份 模板: 元数据: 标签: 应用程序:日志 规格: 卷数: -名称:秘密资源 秘密: 秘籍

我正试图在pod终止之前将日志转移到S3。为此,我们需要

  • 将容器配置为具有AWS-CLI。我成功地做到了这一点 在postStart钩子中使用脚本

  • 执行AWS S3命令将文件从主机路径传输到S3 水桶差点就有了这个

  • 以下是我的Kube部署(在minikube上运行):

    apiVersion:extensions/v1beta1
    种类:部署
    元数据:
    名称:logtransfer poc
    规格:
    副本:1份
    模板:
    元数据:
    标签:
    应用程序:日志
    规格:
    卷数:
    -名称:秘密资源
    秘密:
    秘籍名称:地方秘密
    -名称:testdata
    主机路径:
    路径:/data/testdata
    容器:
    -名称:logtransfer poc
    图像:someImage
    端口:
    -名称:https端口
    集装箱港口:8443
    命令:[“/bin/bash”、“-c”、“--”]
    args:[“当为true时;执行睡眠30;完成;”]
    体积数量:
    -名称:秘密资源
    装载路径:“/data/apache-tomcat/tomcat/resources”
    -名称:testdata
    装载路径:“/data/testdata”
    生命周期:
    启动后:
    执行官:
    命令:[“/bin/sh”、“-c”、“cd/data/testdata/&&chmod u+x installS3Script.sh&./installS3Script.sh>postInstall.logs”]
    预停止:
    执行官:
    命令:[“/bin/sh”、“-c”、“cd/data/testdata/&&chmod u+x transferFilesToS3.sh&./transferFilesToS3.sh>postTransfer.logs”]
    terminationMessagePath:/data/testdata/终止日志
    终止时间:30秒
    你的秘密:
    
    -姓名:我的docker凭证
    也许使用起来会更方便

    Skbn是一种用于在Kubernetes和云存储提供商之间复制文件和目录的工具。它是以1981年的电子游戏命名的。Skbn在复制过程中使用内存缓冲区,以避免过度内存消耗。Skbn目前支持以下提供商: -AWS S3 -迷你S3 -Azure Blob存储

    您可以使用:

    skbn cp \
        --src k8s://<namespace>/<podName>/<containerName>/<path> \
        --dst s3://<bucket>/<path>
    
    skbn-cp\
    --src k8s://\
    --dst s3:///
    

    您应该查看使用情况,因为它需要设置ClusterRole、ClusterRoleBinding和ServiceAccount。

    我不确定skbn如何与我要实现的目标相匹配?!仅供参考,我将installScript添加到transferScript中,以便在preStop钩子中设置aws cli并执行aws命令,这样就可以了!!仍然不确定为什么我不能同时使用postStart和preStop!?!?