2

我想在 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 pod 的日志,并收到以下错误消息,开头为:

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.RELEASEspring-cloud-dataflow-server-kubernetes版本。

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

4

2 回答 2

3

当 SCDF部署程序的 ProcessBuilder 尝试从此路径运行 docker 时,看起来该docker命令未找到:localexec

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

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

于 2018-10-22T05:15:31.627 回答
1

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

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

现在在日志和数据流外壳中,我有帐户defaultminikube帐户。还是要谢谢你的帮助 :)

于 2018-10-22T11:25:37.860 回答