我有一个包含 3 个节点的集群,我想在单个节点丢失后快速恢复。通过恢复,我的意思是我在一段合理的时间(最好是可配置的)后恢复与我的服务的通信。
以下是各种细节:
k8s版本:
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.7", GitCommit:"8eb75a5810cba92ccad845ca360cf924f2385881", GitTreeState:"clean", BuildDate:"2017-04-27T10:00:30Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.7", GitCommit:"8eb75a5810cba92ccad845ca360cf924f2385881", GitTreeState:"clean", BuildDate:"2017-04-27T09:42:05Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
我有一个分布在所有 3 个节点上的服务。在一个节点失败的情况下,我观察到以下行为:
- api 服务器故障转移到另一个节点,kubernetes 服务端点显示正确的 IP 地址(自定义故障转移)。
- api 服务器没有响应
10.100.0.1
(其集群 IP) - 一段时间后,所有相关的服务端点都被清除(例如,
kubectl get ep --namespace=kube-system
显示没有所有端点的就绪地址) - 有问题的服务在服务 IP 上不可用(由于上述原因)
ready
该服务具有就绪/活跃度探测,并且在任何给定时间只有一个实例存在live
。我已经检查了应该可用的实例是否也可用 - 即两者ready
/ live
。
在丢失节点上运行的服务 Pod 收到状态之前,这将持续超过 15 分钟NodeLost
,此时端点被重新填充,我可以像往常一样访问该服务。
我试过摆弄pod-eviction-timeout
,node-monitor-grace-period
设置无济于事 - 时间总是大致相同。
因此,我的问题:
- 在节点丢失的情况下,我在哪里可以详细了解关键 k8s 组件的行为?
- 什么是参数组合来减少集群协调所需的时间,因为这应该在测试中使用?