首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes行为不当的etcd DB簇

kubernetes行为不当的etcd DB簇
EN

Stack Overflow用户
提问于 2020-07-21 19:22:16
回答 2查看 1.4K关注 0票数 2

在我的项目中,我们在Kubernetes上部署了etcd DB (此etcd用于应用程序,与Kubernetes etcd分开)。因此,我使用bitnami头盔图表作为状态集来部署它。最初,在部署时,副本的数量是1,因为我们之前想要一个etcd DB的实例。

真正的问题是,当我们将其缩放到3时,我更新了配置,通过用两个新成员的DNS名称更新ETCD_INITIAL_CLUSTER来扩展它:

代码语言:javascript
复制
etcd-0=http://etcd-0.etcd-headless.wallet.svc.cluster.local:2380,etcd-1=http://etcd-1.etcd-headless.wallet.svc.cluster.local:2380,etcd-2=http://etcd-2.etcd-headless.wallet.svc.cluster.local:2380

现在,当我进入任何一个etcd荚并运行etcdctl成员列表时,我只得到一个成员列表,没有一个成员被选为领导者,这是错误的。三个人中应该有一个是领导者。

此外,在运行了一段时间之后,这些吊舱开始发出心跳超过错误和服务器超载错误:

代码语言:javascript
复制
W |  etcdserver: failed to send out heartbeat on time (exceeded the 950ms timeout for 593.648512ms, to a9b7b8c4e027337a
W | etcdserver: server is likely overloaded
W | wal: sync duration of 2.575790761s, expected less than 1s

我相应地更改了心跳默认值,错误数量减少了,但是,我还是和其他人一起得到了一些心跳超过错误。

不知道这里的问题是什么,是i/o造成的问题吗?如果是的话,我不知道如何确定。

会很感激你在这方面的任何帮助。

EN

回答 2

Stack Overflow用户

发布于 2020-07-21 20:29:07

我不认为心跳是主要的问题,它也似乎你看到的日志是警告日志。因此,这里和那里都有可能错过了一些心跳,但是您的节点是节点,没有崩溃或镜像。

很可能您更改了副本号,并且您的新副本没有加入集群。因此,我建议您按照这个指南将新成员添加到集群中。基本上,对于etcdctl,类似这样的东西:

代码语言:javascript
复制
etcdctl member add node2 --peer-urls=http://node1:2380
etcdctl member add node3 --peer-urls=http://node1:2380,http://node2:2380

请注意,您必须在一个能够访问集群中所有etcd节点的荚中运行这些命令。

您还可以考虑使用etcd算子管理您的etcd集群,该集群应该能够处理节点的缩放和删除/添加。

✌️

票数 1
EN

Stack Overflow用户

发布于 2020-07-30 12:20:41

好吧,我有两个问题:

  • “未能发送心跳”警告信息。
  • “没有领导人选举”。

第二天我发现了第二个问题的原因,其实我在pod定义中设置了启动参数。ETCDCTL_API: 3

因此,当我使用APIv3运行"etcdctl成员列表“时,它没有提到选择哪个成员作为读取器。

代码语言:javascript
复制
$ ETCDCTL_API=3 etcdctl member list
    
    3d0bc1a46f81ecd9, started, etcd-2, http://etcd-2.etcd-headless.wallet.svc.cluster.local:2380, http://etcd-2.etcd-headless.wallet.svc.cluster.local:2379, false
    b6a5d762d566708b, started, etcd-1, http://etcd-1.etcd-headless.wallet.svc.cluster.local:2380, http://etcd-1.etcd-headless.wallet.svc.cluster.local:2379, false


$ ETCDCTL_API=2 etcdctl member list
    
    3d0bc1a46f81ecd9, started, etcd-2, http://etcd-2.etcd-headless.wallet.svc.cluster.local:2380, http://etcd-2.etcd-headless.wallet.svc.cluster.local:2379, false
    b6a5d762d566708b, started, etcd-1, http://etcd-1.etcd-headless.wallet.svc.cluster.local:2380, http://etcd-1.etcd-headless.wallet.svc.cluster.local:2379, true

因此,当我使用APIv2时,我可以看到哪个节点被选举为领导者,并且领导者选举没有问题。仍然在做心跳警告,但我想我需要调优配置,以避免这一点。

注意:我有3个节点,停止一个进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63021675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档