0

我有以下情况:

应用程序使用 S3 在 Amazon 中存储数据。应用程序在 kubernetes 中部署为 pod。有时,一些开发人员会弄乱 S3 的访问数据(例如用户/密码),并且应用程序无法连接到 S3 - 但 pod 正常启动并杀死之前工作正常的 pod 版本(因为所有就绪和活跃度探测都正常)。我想将 S3 探针添加到就绪状态 - 为了HeadBucketRequest在 S3 上执行,如果这个成功,它就能够连接到 S3。这里的问题是这些请求需要花钱,而我真的只在 pod 启动时才需要它们。

是否有与此相关的最佳实践?

4

2 回答 2

0

Readiness 和 liveness 用于在运行时检查 POD 或容器的健康状况。您的场景非常连贯,但是使用 Readiness 和 liveness 探针,它不会工作,因为它会在内部触发并且需要花钱。

在这种情况下,您可以使用生命周期挂钩:

containers:
      - image: MAGE_NAME
        lifecycle:
          postStart:
            exec:
              command:  ["/bin/sh", "-c", "script.sh"]

这将在容器启动时运行钩子,您可以将 shell 文件保存在 POD 或图像中。

在 shell 文件中,如果200响应移动头部和容器启动,您可以正确逻辑。

https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/

于 2021-05-20T14:07:47.553 回答
0

如果您(引用)“......仅在 pod 启动时才真正需要它们 [探针]”然后考虑添加启动探针

除了启动探针的帮助(启动时间较长的 pod)之外,启动探针还可以仅在 pod 启动时验证条件。

于 2021-05-20T13:55:56.010 回答