我在kubernetes部署中使用janusgraph docker image - https://hub.docker.com/r/janusgraph/janusgraph通过挂载到docker-entrypoint-initdb.d的groovy脚本初始化远程图
这可以正常工作,但是如果远程主机还没有准备好,janusgraph容器就会抛出异常,并且仍然处于运行模式。
因此,kubernetes将不会再次尝试重新启动容器。有没有什么方法可以配置这个janusgraph容器在出现任何异常时终止
发布于 2021-01-27 05:15:48
这里可以使用janusgraph show-config之类的命令或类似的命令来使用readinessProbe,它将以代码-1退出
spec:
containers:
- name: liveness
image: janusgraph/janusgraph:latest
readinessProbe:
exec:
command:
- janusgraph
- show-config如果readinessProbe失败,Kubernetes会终止pod。这里也可以使用livenessProbe,以防远程主机变得不可用时需要终止此pod。
考虑enabling JanusGraph服务器指标,然后可以将其与普罗米修斯一起使用,以进行额外的监控,甚至与livenessProbe本身一起使用。
发布于 2021-01-27 17:33:30
正如@Gavin提到的,你可以使用探测器来检查容器是否工作。Liveness Probes用于获知容器何时发生故障。如果容器没有响应,它可以重新启动容器。
就绪探测通知容器何时可用于接受流量。就绪探测用于控制将哪些pod用作服务的后端。当一个pod的所有容器都准备就绪时,它就被认为是就绪的。如果pod未就绪,则会将其从服务端点中删除。
Kubernetes支持三种实现活跃度和就绪探测的机制:
1)对容器发出请求此探测器具有可在httpGet上设置的其他字段
要连接的
host:主机名,默认为pod IP。您可能希望在HTTPS instead.scheme:方案中设置“主机”以用于连接到主机( httpHeaders或HTTPS)。默认为在HTTP.path:服务器上访问的HTTP路径。默认为要在请求中设置的/.httpHeaders:自定义头。HTTP允许在容器上访问重复的headers.port:名称或端口号。数字必须在1到65535之间。更多内容请阅读:http-probes。
livenessProbe:
httpGet:
path: /healthz
port: liveness-portTCP 2)针对容器打开套接字的
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添加到您的pods定义中。默认情况下为always。
https://stackoverflow.com/questions/65907261
复制相似问题