gpt4 book ai didi

kubernetes - 如果抛出任何异常,如何终止 janusgraph 容器

转载 作者:行者123 更新时间:2023-12-04 15:07:07 24 4
gpt4 key购买 nike

我正在使用 janusgraph docker 镜像 - https://hub.docker.com/r/janusgraph/janusgraph在我的 kubernetes 部署中,使用挂载到 docker-entrypoint-initdb.d

的 groovy 脚本初始化远程图

这按预期工作,但如果远程主机未准备好,janusgraph 容器将抛出异常并仍处于运行模式。

因此 kubernetes 不会尝试再次重启容器。有什么办法可以让我配置这个 janusgraph 容器以在出现任何异常时终止

最佳答案

正如@Gavin 提到的,您可以使用探测器来检查容器是否正常工作。 Liveness Probes用于知道容器何时失败。如果容器没有响应 - 它可以重新启动容器。

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

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

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

  • host: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
  • scheme: Scheme to use for connecting to the host (HTTP or HTTPS). Defaults to HTTP.
  • path: Path to access on the HTTP server. Defaults to /.
  • httpHeaders: Custom headers to set in the request. HTTP allows repeated headers.
  • port: Name or number of the port to access on the container. Number must be in the range 1 to 65535.

阅读更多: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到你的 pod 定义。默认情况下总是。

关于kubernetes - 如果抛出任何异常,如何终止 janusgraph 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65907261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com