Java 如何等待kubernetes服务启动?
在kubernetes中,我创建了一个服务:Java 如何等待kubernetes服务启动?,java,service,kubernetes,Java,Service,Kubernetes,在kubernetes中,我创建了一个服务: V1ServicePort servicePort = new V1ServicePort().port(2000); servicePort.setName("clientPort"); V1ServiceSpec spec = new V1ServiceSpec(); spec.addPortsItem(servicePort); spec.setType("NodePort"); spec.putSelectorItem("app", "my
V1ServicePort servicePort = new V1ServicePort().port(2000);
servicePort.setName("clientPort");
V1ServiceSpec spec = new V1ServiceSpec();
spec.addPortsItem(servicePort);
spec.setType("NodePort");
spec.putSelectorItem("app", "myAppName");
V1Service service = new V1Service();
service.setMetadata(new V1ObjectMeta().name("my_service"));
service.setSpec(spec);
api.createNamespacedService(namespace, myService, null);
但它不会立即启动。我只能在10秒后使用特定端口连接到服务
如何在Java中发出等待请求,直到服务启动?在Kubernetes中,典型的情况是崩溃。确保记录异常或错误消息 这听起来很糟糕,但实际情况是Kubernetes默认重启崩溃的吊舱。给定JVM启动时间,第二次启动可能需要10秒。如果您的进程启动得非常快,您将短暂地进入CrashLoopBackOff状态,这意味着Kubernetes正在重启pod之间暂停 这种方法的一个重要后果是,如果后端服务实际无法启动,依赖它的服务也将显示为失败(它们将陷入CrashLoopBackOff)。然后,您可以使用
kubectl日志对其进行诊断,并查看实际情况
其他技巧,如Docker Compose设置中常见的,或只是将connect调用放入for循环中的,也会起作用,但如果整个系统不健康,则失败的时间会更长