问题标签 [etcd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
14709 浏览

python - Pythonic 分离进程的方法?

我正在运行一个etcd进程,它会一直保持活动状态,直到你杀死它。(它不提供守护程序模式选项。)我想将其分离,以便继续运行更多 python。

我会在 shell 中做什么;

sh在整个互联网的热情推荐下,我正在使用 python 的库。我宁愿不使用subprocessor Popen,但我也没有找到使用这些的解决方案。

我想要的是;

或者

不幸detach的是,它不是一个 kwarg,而是sh将."&"etcd

我在这里错过了什么吗?这样做的好方法是什么?

0 投票
1 回答
1182 浏览

vagrant - Etcd 正在运行,但在 coreos 上的 systemd 中找不到 etcd.service

所以我试图在 vagrant 的 coreos 上设置一个主 Kubernetes 节点。我正在使用示例主云配置,在此处找到https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/getting-started-guides/coreos/cloud-configs/master.yaml并添加这作为第一个单位:

一旦我 vagrant up 和 vagrant ssh,我运行sudo systemctl status kube-apiserver并发现它kube-apiserver由于无法找到而关闭etcd.service;但是,当我这样做时,ps -ef | grep etcdetcd 显然正在运行。systemd 中是否有 etcd.service 的特定位置,或者我是否必须在 cloud-config 中的单元中添加内容字段或其他内容?

0 投票
1 回答
288 浏览

coreos - kube-apiserver 可以允许本地主机之外的不安全连接吗?

我正在尝试为开发环境(本地 vms)设置一个 kubernetes 集群。因为它是开发,所以我没有为 api-server 使用工作证书。看来我必须使用安全连接才能将 minion 守护进程连接kube-proxykubeletmaster 的kube-apiserver. 有没有人找到解决方法?我在文档中没有看到任何关于能够强制不安全连接或忽略证书不好的内容,我认为在运行 minion 或 master 守护进程时会有一个标志,但我没有运气。Etcd 正在工作,它显示来自 master 和 minions 的任何条目,并且日志显示握手尝试,但由于证书错误肯定会失败。

0 投票
1 回答
787 浏览

docker - Kubernetes minion 未完全连接

我有一个开发 kubernetes 集群设置,我有一个运行 kube-proxy 和 kubelet 的 minion。两者都只有在它可以连接到主服务器的 apiserver 时才启动,它可以。但是我得到了

error updating node status, will retry: error getting node "10.211.55.126": minion "10.211.55.126" not found

我注意到在此之前我得到了这个:Server rejected event '&api.Event后面是一个带有大部分空字符串值的大型 json 对象。

当我尝试运行 minion 的 kubelet 时重复。我让它指向一个私有 ip,它报告它无法找到公共 ip。我想这是一个 etcd 问题,但我不确定,也可能是法兰绒?

更新 1 我设法通过向主人注册小兵(节点?)来通过初始错误。这允许它从桅杆接收 pod 并运行容器;然而,minion 仍然没有完全连接,导致 master 不断向 minion 推送更多的 pod。kubelet 进程正在报告:Cannot get host IP: Host IP unknown; known addresses: []. 是否有运行 kubelet 的标志来为其提供主机 ip?

0 投票
2 回答
890 浏览

optimistic-locking - 乐观锁定和重试

我不确定方法的正确设计。

我们使用放置在每个实体上的递增版本来使用乐观锁定。long这种实体的每次更新都是通过比较和交换算法执行的,该算法成功或失败取决于其他客户端是否同时更新实体。经典的乐观锁定,例如hibernate。

我们还需要采取重试的方式。我们使用http基于存储(etcd),并且可能会发生某些更新请求刚刚超时。

这就是问题所在。如何结合乐观锁和重试。这是我面临的具体问题。

假设我有一个实体,version=1我正在尝试更新它。下个版本显然是2. 我的客户比执行条件更新。只有当持久化中的版本是1并且它被原子地更新为version=2. 到目前为止,一切都很好。

现在,假设更新请求的响应没有到达。目前还不能说成功与否。我现在唯一能做的就是重试更新。在内存实体中仍然包含version=1打算将值更新为2.

现在真正的问题出现了。如果第二次更新因为持久化版本 is2而不是而失败1怎么办?

有两个可能的原因:

  1. 第一个请求确实导致了更新 - 操作成功但响应丢失或我的客户端超时,无论如何。它只是没有到达,但它通过了
  2. 其他一些客户端在后台同时执行更新

现在我不能说什么是真的。我的客户更新了实体还是其他客户做了?操作是通过还是失败?

我们当前使用的方法只是比较持久实体和主内存中的实体。作为 java 相等或 json 内容相等。如果它们相等,则更新方法被声明为成功。我对算法不满意,因为它对我来说既不便宜也不合理。

另一种可能的方法是不使用long版本,timestamp而是使用。每个客户端都会在更新操作中生成自己的时间戳,这意味着潜在的并发客户端很可能会生成其他客户端。我的问题是概率,特别是当两个并发更新来自同一台机器时。

还有其他解决方案吗?

0 投票
1 回答
2934 浏览

etcd - 我如何使用 etcd 进行原子更新

我试图了解 etcd 上的“原子”更新是什么。

当我想到“原子”时,我认为有“之前”和“之后”(没有期间,如果更新失败,它仍然是“之前”)。

这是一个例子:

因此,此时,任何人都可以访问该消息并获取当前值:

稍后,我可以修改这个值,如下所示:

并且可以像以前一样获取结果。在我更改值“Hidee Ho”之前返回,更改后值“Mr Hanky”返回。所以,我的问题是我能保证其中一个结果吗?也就是说,我想确认将返回一个或另一个(而不是结果之间的nil值)。

我不是特别在意时间。如果我进行 Hanky 先生更新,并且随后的价值获取者在(短)一段时间内继续获得 Hidee Ho,那没关系。

我很困惑,因为协议中有一个 Atomic CompareAndSwap函数。据我所知,它不是原子的,而是“只有当值是我所说的值时才进行更新”。就我而言,我不太在乎过去的价值。我只想知道它已经改变了,除了“之前”或“之后”值之外,没有读者会看到任何东西。

0 投票
1 回答
487 浏览

go - 使用 Kite 和 Kontrol 的分布式微服务

我能够将我的风筝微服务注册到 kontrol 但无法发现它,

我收到身份验证错误。

我也找不到$USER_HOME/.kite/kite.key文件。

0 投票
2 回答
4350 浏览

java - Hazelcast (Java) 和 ETCD (golang) 的区别/相似之处?

现在我们构建了一个实时分析系统,它应该是高度分布式的。我们计划使用分布式锁和计数器来确保数据的一致性,并且我们需要某种分布式映射来知道哪个客户端连接到哪个服务器。我之前没有分布式系统方面的经验,但我认为我们有两个选择:

  1. Java+Hazelcast

  2. Golang+ETCD

但是在主题上下文中,彼此的优缺点是什么?

0 投票
1 回答
382 浏览

etcd - 使用 `etcdctl` 创建有序键

我打算使用 etcd 作为键值存储。

我发现 etcd 有一个 API,我可以创建有序键。

https://coreos.com/etcd/docs/0.4.7/etcd-api/#atomically-creating-in-order-keys

Python etcd 客户端支持此 API。

https://python-etcd.readthedocs.org/en/latest/#set-a-key

但是,我不确定如何使用etcdctl命令来执行此操作。 etcdctl set似乎没有附加选项。

有没有办法用 来创建按顺序创建的键etcdctl

0 投票
1 回答
501 浏览

amazon-ec2 - CoreOS、Fleet 和 Etcd2 容错

我有一个 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 因任何原因不可用,我是否可以修改设置以将单元安排到节点上?