如何在抛出异常时终止janusgraph容器



我使用janusgraph docker image - https://hub.docker.com/r/janusgraph/janusgraph在我的kubernetes部署中,使用挂载到docker-entrypoint-initdb.d的groovy脚本初始化远程图形

这可以像预期的那样工作,但是如果远程主机没有准备好,janusgraph容器会抛出异常,并且仍然处于运行模式。

因此kubernetes将不再尝试重新启动容器。是否有任何方法可以让我配置这个janusgraph容器在任何异常情况下终止

正如@Gavin所提到的,您可以使用探针来检查容器是否正在工作。活体探针用于知道容器何时发生故障。如果一个容器没有响应——它可以重新启动容器。

Readiness探测器通知容器何时可以接受流量。就绪探测器用于控制哪些pod用作服务的后端。当一个pod的所有容器都准备好时,它就被认为准备好了。如果pod没有准备好,它将从服务端点中删除。

Kubernetes支持三种机制来实现活跃度和就绪度探测:

1)对容器发出HTTP请求该探测具有可以在httpGet上设置的附加字段:

  • host:要连接的主机名,默认为pod IP。你可能想设置"Host">
  • scheme:用于连接主机的方案(HTTP或HTTPS)。默认为HTTP。
  • path: HTTP服务器上要访问的路径。默认为/.
  • httpHeaders:在请求中设置自定义报头。HTTP允许重复报头。
  • port:容器上要访问的端口的名称或编号。

阅读更多:http-probes.

livenessProbe:
httpGet:
path: /healthz
port: liveness-port

2)在容器上打开TCP套接字

initialDelaySeconds: 15  
livenessProbe: ~  
periodSeconds: 20  
port: 8080  
tcpSocket: ~

3)在容器内运行命令

livenessProbe:  
exec:  
command:  
- sh  
- /tmp/status_check.sh  
initialDelaySeconds: 10  

如果您得到的状态码不同于0,这将意味着探测失败。您还可以向探针添加额外的参数,例如initialDelaySeconds:指示容器启动后激活或就绪探针启动前的秒数。看到:configuring-probes。

在任何情况下也添加restartPolicy: Never你的豆荚定义。默认为。

readinessProbe可以在这里使用janusgraph show-config或类似的命令,它将以代码-1退出

spec:
containers:
- name: liveness
image: janusgraph/janusgraph:latest
readinessProbe:
exec:
command:
- janusgraph 
- show-config

如果readinessProbe失败,Kubernetes将终止pod。这里也可以使用liveessprobe,以防在远程主机不可用时需要终止此pod。

考虑启用JanusGraph服务器指标,然后可以将其与Prometheus一起用于额外的监视,甚至与livenessProbe本身一起使用。

相关内容

  • 没有找到相关文章

最新更新