我想在 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版本。
我真的不知道为什么会出现这个错误。谢谢 !