现在,我们已将服务部署为具有多个副本的Kubernetes Deployments。一旦服务器崩溃,Kubernetes会将其容器迁移到另一个可用的服务器,该服务器的任务大约需要3~5分钟。
迁移时,客户端可以访问部署服务,因为我们还有其他正在运行的副本。但有时请求会失败,因为负载均衡器会重定向到死容器或迁移容器。
如果Kubernetes可以自动启动死亡副本并在其他服务器中运行后添加它们,那将是很棒的。否则,我们需要像haproxy一样设置LB,以便在多个部署实例中执行相同的工作。
答案 0 :(得分:4)
您需要配置运行状况检查,以便为服务正确运行负载平衡。请阅读:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
kubelet使用准备情况探测器来了解Container何时准备开始接受流量。当所有容器准备就绪时,Pod被认为已准备就绪。此信号的一个用途是控制哪些Pod用作服务的后端。当Pod未就绪时,它将从服务负载平衡器中删除。
答案 1 :(得分:2)
1,kubelet
- 节点状态更新频率持续时间 指定kubelet将节点状态发布到master的频率。注意:更改常量时要小心,它必须与nodecontroller中的nodeMonitorGracePeriod一起使用。默认值:10秒(默认为10秒)
2,控制器的管理器
- node-monitor-grace-period duration 我们允许运行Node在标记为不健康之前无响应的时间量。 必须是kubelet的nodeStatusUpdateFrequency 的N倍,其中N表示允许kubelet发布节点状态的重试次数。 (默认40秒)
- pod-eviction-timeout duration 删除故障节点上的pod的宽限期。 (默认为5m0s )