【问题标题】:HaProxy Ingress Controller - what is the process of add a pod?HaProxy Ingress Controller - 添加 pod 的过程是什么?
【发布时间】:2020-05-15 08:16:29
【问题描述】:
使用 HaProxy 作为入口控制器时在 Kubernetes 集群上。当旧的 pod 死亡时,HaProxy 将如何添加新的 pod。
它是否可以确保 pod 已准备好接收流量。
现在我正在使用就绪探针和活跃度探针。我知道 Kubernetes 中使用新 pod 的顺序是首先 Liveness probe --> Readiness probe --> 6/6 --> pod is ready。
那么它会使用与 HaProxy Ingress Controller 相同的 Kubernetes 机制吗?
【问题讨论】:
标签:
kubernetes
haproxy
readinessprobe
haproxy-ingress
【解决方案1】:
简短的回答是:是的!
来自documentation:
最苛刻的部分是同步 pod 的状态,因为环境是高度动态的,可以随时创建或销毁 pod。控制器通过 HAProxy 数据平面 API 将这些更改直接提供给 HAProxy,后者会根据需要重新加载 HAProxy。
HAProxy ingress 不负责 pod 是否健康,它负责接收外部流量并转发正确的 kubernetes 服务。
Kubelet 使用 liveness 和 probes 来知道何时重新启动容器,这意味着您必须在 pod 定义中定义 liveness, readiness。
在 pod lifecycle 文档中查看有关容器探针的更多信息。
kubelet 使用就绪探测来了解容器何时准备好开始接受流量。当 Pod 的所有 Container 都准备好时,就认为 Pod 准备好了。此信号的一种用途是控制哪些 Pod 用作服务的后端。当 Pod 未准备好时,它会从服务负载均衡器中移除。