我想在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平台。
我正在使用{strong> 1.6.2.RELEASE 版本的spring-cloud-dataflow-server-kubernetes
。
我真的不知道为什么会出现此错误。谢谢!
答案 0 :(得分:3)
当SCDF docker
部署人员的ProcessBuilder尝试从以下路径运行docker local
时,似乎找不到exec
命令:
/tmp/spring-cloud-deployer-5769885450333766520/time-log-kinesis-stream-1539963209716/time-log-kinesis-stream.log-sink-kinesis-app-v1
SCDF在运行docker
命令之前将上述路径设置为其工作目录,因此,docker
将从此位置运行。
答案 1 :(得分:1)
我发现问题出在哪里。我不好,问题总是在键盘和椅子之间!
我想删除newDf <- droplevels(employ.data[employ.data$employee == "John Doe",])
文件中的所有度量标准过程,并且在配置文件中插入了一个错字。用于Skipper启动的JSON环境变量skipper-config.yaml
无效,因此data.spring.application.json
从未看到将Kubernetes添加到存储库所需的属性!
现在在日志和数据流外壳程序中,我有DeployerInitializationService
和default
帐户。无论如何,谢谢您的帮助:)