我有一个 23 节点集群,在 AWS 上跨 4 个可用区运行 CoreOS Stable 681.2.0。所有节点都在运行 etcd2 和 flannel。在 23 个节点中,8 个是专用的 etcd2 节点,其余的被专门指定为 etcd2 代理。
计划到集群的是 3 个 nginx plus 容器、一个私有 Docker 注册表、SkyDNS 和 4 个我们的应用程序容器。应用程序容器向 etcd2 注册自己,而 nginx 容器接收任何更改,呈现必要的文件,最后重新加载。
这一切都完美无缺,直到单个 etcd2 节点因任何原因不可用。
如果投票的 etcd2 成员集群失去了与其他一个投票的 etcd2 成员的连接,那么调度到队列的所有服务都会变得不稳定。计划的服务在没有我干预的情况下开始停止和启动。
作为测试,我开始停止托管投票 etcd2 节点的 EC2 实例,直到失去仲裁。第一个etcd2节点停止后,就开始出现上述症状。在第二个节点之后,服务变得不稳定,没有明显的变化。然后,在第三个停止后,法定人数丢失,所有单位都未安排。然后我再次启动了所有三个 etcd2 节点,并且在 60 秒内集群恢复了稳定状态。
随后的测试产生相同的结果。
我是否遇到了 etcd2、fleet 或 CoreOS 中的已知错误?
即使 etcd 因任何原因不可用,我是否可以修改设置以将单元安排到节点上?