我想在 AWS 上的 Kubernetes 集群上使用 Kinesis 流部署 Spring Boot 应用程序。
我在 AWS EC2 (Amazon Linux) 实例中使用 kops 创建集群并使用 terraform 部署它。
我使用 Helm 图表安装了适用于 Kubernetes 的 Spring Cloud Data Flow。我的所有 Pod 均已启动并运行,我可以访问 Spring Cloud Data Flow 界面以注册我的 Docker 化应用程序。我正在使用 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.RELEASE版本的spring-cloud-dataflow-server-kubernetes
。
我真的不知道为什么会出现这个错误。谢谢!
最佳答案
当 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
预计将从该位置运行。
关于amazon-web-services - Spring云数据流: Cannot run program "docker",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52896203/