我的具体问题是我是否可以控制我的容器,使其在设置准备好之前显示“正在启动”,并且可以在此之后立即启动运行状况检查?
我认为仅使用 K8s 或 Docker 是不可能的。
容器并非旨在与 Docker Daemon 或 Kubernetes 通信以告知其内部设置已完成。
如果应用程序需要一些时间来设置,您可以使用 Kubernetes 的就绪和活跃度探测选项。
您确实可以配置 readynessProbe以在特定延迟后执行初始检查。
例如指定 120 秒作为初始延迟:
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 120
同样的事情livenessProbe
:
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 120
periodSeconds: 3
对于 Docker “单独”,虽然没有那么多可配置,但您可以使其与子命令的--health - start-period 参数一起工作:docker run
--health-start-period :容器在开始健康重试倒计时之前初始化的开始时间
例如,您可以指定一个重要的值,例如:
docker run --health-start-period=120s ...