【问题标题】:Spring Cloud Data Flow : Cannot run program "docker"Spring Cloud 数据流:无法运行程序“docker”
【发布时间】:2019-03-24 13:44:03
【问题描述】:

我想在 AWS 上的 Kubernetes 集群上使用 Kinesis 流部署 Spring Boot 应用程序。

我在 AWS EC2 (Amazon Linux) 实例中使用 kops 来创建我的集群并使用 terraform 进行部署。

我使用 Helm 图表为 Kubernetes 安装了 Spring Cloud Data Flow。我所有的 pod 都已启动并正在运行,我可以访问 Spring Cloud Data Flow 界面来注册我的 dockerized 应用程序。我正在使用 ECR 存储库上传我的 Docker 映像。

当我想部署流(由时间源和日志接收器组成)时,会弹出一条漂亮的红色大错误消息。我检查了 Skipper 吊舱的日志,我收到以下错误消息,以 :

开头
org.springframework.cloud.skipper.SkipperException: Could not install AppDeployRequest

并以 :

结尾
Caused by: java.io.IOException: Cannot run program "docker" (in directory "/tmp/spring-cloud-deployer-5769885450333766520/time-log-kinesis-stream-1539963209716/time-log-kinesis-stream.log-sink-kinesis-app-v1"): error=2, No such file or directory
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048) ~[na:1.8.0_111-internal]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer$AppInstance.start(LocalAppDeployer.java:386) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer$AppInstance.start(LocalAppDeployer.java:414) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer$AppInstance.access$200(LocalAppDeployer.java:296) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        at org.springframework.cloud.deployer.spi.local.LocalAppDeployer.deploy(LocalAppDeployer.java:199) ~[spring-cloud-deployer-local-1.3.7.RELEASE.jar!/:1.3.7.RELEASE]
        ... 54 common frames omitted
Caused by: java.io.IOException: error=2, No such file or directory
        at java.lang.UNIXProcess.forkAndExec(Native Method) ~[na:1.8.0_111-internal]
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:247) ~[na:1.8.0_111-internal]
        at java.lang.ProcessImpl.start(ProcessImpl.java:134) ~[na:1.8.0_111-internal]
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) ~[na:1.8.0_111-internal]
        ... 58 common frames omitted

当我尝试在 Windows 10 上的本地 k8s 集群上部署时,我已经遇到此错误,我认为它链接到了 Win10 平台。

我在 1.6.2.RELEASE 版本中使用spring-cloud-dataflow-server-kubernetes

我真的不知道为什么会出现这个错误。谢谢!

【问题讨论】:

    标签: amazon-web-services docker kubernetes spring-cloud-dataflow


    【解决方案1】:

    当 SCDF local 部署者的 ProcessBuilder 尝试从此路径运行 docker exec 时,似乎找不到 docker 命令:

    /tmp/spring-cloud-deployer-5769885450333766520/time-log-kinesis-stream-1539963209716/time-log-kinesis-stream.log-sink-kinesis-app-v1

    SCDF 在运行docker 命令之前将上述路径设置为其工作目录,因此预计docker 将从该位置运行。

    【讨论】:

    • 感谢您的回答。如果我理解正确,则使用 SCDF localdeployer。我想使用Kubernetesdeployer。在船长文档中,它是这样写的:Skipper supports deploying to multiple platforms. The platforms included are Local, Cloud Foundry and Kubernetes. 因此我应该能够使用Kubernetesdeployer。我检查了我正在使用的 Helm 图表,在 values.yaml 文件中,有一个属性:skipper.platformName=minikube。这是确保我们使用Kubernetesdeployer 吗?
    • platformName 是您的配置中使用的帐户。例如,您可以按照此处所述配置您的属性:docs.spring.io/spring-cloud-skipper/docs/current-SNAPSHOT/…
    • 我在文档中看到了yamlconfiguration 文件。当我使用 Helm 图表部署 SCDF 堆栈时,除了参数中给出的应用程序属性外,我看不到可以在哪里填充这些属性。在skipper-config.yaml 文件中,有一个属性:spring.cloud.skipper.server.enableLocalPlatform 设置为false。所以我的猜测是Kubernetes被自动使用了。
    • 您可以在此处查看配置属性:github.com/helm/charts/tree/master/incubator/…。您可以使用 skipper.platformName 覆盖任何自定义 k8s 帐户。否则,minikube 是默认帐户名。
    • 好的。我想我开始看到真正的问题在哪里。我没有使用 SCDF 流部署器界面来定位正确的部署器!我仍在尝试确定指定 Kubernetes 部署程序。有一个全局 Platform 属性与具有 default (local) 值的 skipper.platformName 匹配。如果我尝试输入另一个值,如“Kubernetes”或“minikube”(根据配置),该选项将标记为 Invalid。还有一个类别Deployment Platform我不知道我可以放入其中。
    【解决方案2】:

    我发现问题出在哪里。我的错,问题总是在键盘和椅子之间!

    我想删除 skipper-config.yaml 文件中的所有指标过程,并在配置文件中插入了一个错字。用于 Skipper 启动的 JSON 环境变量 data.spring.application.json 无效,因此 DeployerInitializationService 从未看到将 Kubernetes 添加到存储库所需的属性!

    现在在日志和数据流 shell 中,我有 defaultminikube 帐户。无论如何感谢您的帮助:)

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 2020-11-22
      • 1970-01-01
      • 2022-01-12
      • 2019-03-02
      相关资源
      最近更新 更多