在使用 pod 之前是否有 kubernetes 配置参数(服务或 rc 或其他)延迟

Is there a kubernetes config parm (service or rc or other) to delay before using a pod

我们是 运行 针对托管小型(3 个容器)pod 的 2 个实例的集群的工作负载。使用服务 w/nodeport 访问 pod。如果我们停止一个 pod 并且 rc 启动一个新的 pod,我们的恒定(低容量)工作负载会出现许多故障(Rational Perf Tester,http 测试命中 master 上的服务......但如果它命中任何一个 minion 可能相同......主人也有一个仆从)。无论如何,如果我们只是用 kubectl scale 添加一个 pod,我们也会得到错误。如果我们然后取下这个 pod(rc 不会启动一个新的 pod,因为由于规模我们有一个多于需要的 pod)......没有错误。似乎服务开始将工作发送到新的 pod,因为 kubelet 已经完成了他的工作,即使容器没有启动。因此,任何时候 pod 启动......它开始接收工作有点过早(在 kubelet 完成他的工作之后,但在所有容器准备好之前)。有没有办法保证在所有容器都启动之前服务不会路由到这个 pod?除非有某种方式可以说在发送到此 pod 之前等待 'n' 秒?我可能错了,但行为似乎暗示了这种情况。

这正是 readinessProbe 选项的作用:)

在 pod 规范中记录了更多 here and here, and is part of the container definition

例如,您可以使用如下所示的 pod 规范来确保您的 nginx pod 在响应 HTTP 请求之前不会被标记为就绪(因此不会向其发送流量)对于 /index.html:

apiVersion: v1
kind: ReplicationController
metadata:
  name: my-nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        lifecycle:
          httpGet:
            path: /index.html
            port: 80
          initialDelaySeconds: 10
          timeoutSeconds: 5