如何启动 Kubernetes 部署的死副本
How to kickoff the dead replicas of Kubernetes Deployment
现在我们已经将服务部署为具有多个副本的 Kubernetes 部署。一旦服务器崩溃,Kubernetes 会将其容器迁移到另一台可用的服务器,任务大约需要 3~5 分钟。
迁移时,客户端可以访问 Deployment 服务,因为我们还有其他 运行ning 副本。但有时请求会失败,因为负载均衡器重定向到死容器或正在迁移的容器。
如果 Kubernetes 可以自动启动死掉的副本并在它们 运行 到其他服务器时添加它们,那就太好了。否则,我们需要像 haproxy 一样设置 LB,以使用多个 Deployment 实例完成相同的工作。
您需要配置健康检查才能使服务正常工作负载平衡。请阅读:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
The kubelet uses readiness probes to know when a Container is ready to start accepting traffic. A Pod is considered ready when all of its Containers are ready. One use of this signal is to control which Pods are used as backends for Services. When a Pod is not ready, it is removed from Service load balancers.
1、kubelet
--节点状态更新频率持续时间
指定 kubelet posts 节点状态掌握的频率。注意:更改常量时要小心,它必须与nodecontroller中的nodeMonitorGracePeriod一起使用。默认值:10s(默认10s)
2、controller-manager
--node-monitor-grace-period duration
在将节点标记为不健康之前,我们允许 运行 节点无响应的时间。 必须是 kubelet 的 nodeStatusUpdateFrequency 的 N 倍,其中 N 表示允许 kubelet 重试到 post 节点状态的次数。 (默认 40s)
--pod-eviction-timeout 持续时间
在故障节点上删除 pods 的宽限期。 (默认 5m0s)
现在我们已经将服务部署为具有多个副本的 Kubernetes 部署。一旦服务器崩溃,Kubernetes 会将其容器迁移到另一台可用的服务器,任务大约需要 3~5 分钟。
迁移时,客户端可以访问 Deployment 服务,因为我们还有其他 运行ning 副本。但有时请求会失败,因为负载均衡器重定向到死容器或正在迁移的容器。
如果 Kubernetes 可以自动启动死掉的副本并在它们 运行 到其他服务器时添加它们,那就太好了。否则,我们需要像 haproxy 一样设置 LB,以使用多个 Deployment 实例完成相同的工作。
您需要配置健康检查才能使服务正常工作负载平衡。请阅读:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
The kubelet uses readiness probes to know when a Container is ready to start accepting traffic. A Pod is considered ready when all of its Containers are ready. One use of this signal is to control which Pods are used as backends for Services. When a Pod is not ready, it is removed from Service load balancers.
1、kubelet
--节点状态更新频率持续时间 指定 kubelet posts 节点状态掌握的频率。注意:更改常量时要小心,它必须与nodecontroller中的nodeMonitorGracePeriod一起使用。默认值:10s(默认10s)
2、controller-manager
--node-monitor-grace-period duration 在将节点标记为不健康之前,我们允许 运行 节点无响应的时间。 必须是 kubelet 的 nodeStatusUpdateFrequency 的 N 倍,其中 N 表示允许 kubelet 重试到 post 节点状态的次数。 (默认 40s)
--pod-eviction-timeout 持续时间 在故障节点上删除 pods 的宽限期。 (默认 5m0s)