问题标签 [etcd3]

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 投票
0 回答
813 浏览

go - etcd 监视不同的客户端

我很难与etcd watch客户组合一起工作。

什么有效:我Watchgolang客户端做,我put也在那里做。然后观察寄存器变化。如果我etcdctl以相同的方式使用,即在命令行中同时观看/收听,它也可以工作。

什么不起作用:我从命令行发布并在 go 中观看,反之亦然。

  • 看命令行,放 golang: 不起作用
  • 观看命令行,输入命令行:有效
  • 看golang,输入命令行:不起作用
  • 看 golang,把 golang: 工作

“不起作用”是指未触发观察者。

我正在玩的 Go 代码(你可以像这样运行go run main.go (true|false) (true|false))

etcdctl我用来发布/观看的命令:

更新:

手表:

0 投票
1 回答
157 浏览

etcd3 - 写入 etcd v3 基准测试中的所有成员

以下是用于基准测试“写入所有成员”的内容。

我的理解是只有leader听写请求。那么如何写入 etcd 集群的所有成员呢?

0 投票
2 回答
5128 浏览

rest - 如何使用etcd v3 restful api观看

我正在尝试使用 etcdv3 restful api 观看密钥,遵循etcd/Documentation/dev-guide/api_grpc_gateway.md,但它似乎不适用于观看。

手表不会有反应。

这是我的 docker-compose.yml:

0 投票
1 回答
197 浏览

kubernetes - 有没有办法确定 kubernetes apiserver 正在与哪个 etcd 主机通信?

只有 apiserver 直接与 etcd 对话。在 etcd 集群中有很多主机。我想看看 apiserver 正在与哪个 etcd 主机通信。对于每个 api 资源(如 Pod 或 Node),这可能会有所不同。我更喜欢查看每个请求的 etcd 主机信息。

具体来说,kubernetes 1.6.13 和 etcd 3.1.14 使用 v3 存储。

我努力了:

  1. 在 kubernetnes api 服务器上启用 etcd 客户端和 grpc 日志记录。

    我认为 grpc 只记录意外事件。同样适用于 etcd clientv3。我无法获得有关连接的 etcd 端的信息。

  2. GODEBUG=http2debug=2在 api 服务器上启用 http2 调试日志记录

    令我惊讶的是,http2 调试日志打印了有关每个请求的大量信息,但我找不到远程端点信息。我仍然对此持怀疑态度,我可能在日志文件中遗漏了提及。不完全确定。

  3. 在 etcd 端调试日志。

    使用启用调试日志启用调试日志仅打印有关 v2 存储访问的信息。对于 v3 存储,可以使用 http://<host>2379/debug/requests端点,但在我的 etcd 3.1.14 版本中不可用。

  4. 我还没有尝试GODEBUG=http2debug=2在 etcd 端使用。也许 etcd 上的 http2 日志有我需要的信息。

  5. tcpdump或者tcpflow

    apiserver <-> etcd 连接是加密的。这些会显示请求网址吗?我我没有在转储中看到该信息。

  6. 中间人使用 mitmproxy 攻击 apiserver <-> etcd连接。我认为这不应该那么复杂。

我希望,我错过了一种非常明显和简单的方法来实现这一点。


更新:

关于使用lsof基于方法:

使用lsof,我们可以一次列出带有端点信息的连接。我认为lsof输出中没有足够的信息来到达每个请求的端点信息。Apiserver 打开了很多到 etcd 的连接。查看代码,观察对我来说是合理的。看这里NewStorage_

连接看起来像这样

$ sudo lsof -

看着这个,我不知道 apiserver 和 etcd 之间的每个请求使用了哪个 etcd。


更新:

我认为在 kubernetes 1.6.13 附带的 etcdv3 客户端代码中,该grpc.Balancer.Get函数返回用于每个 grpc 请求的端点地址。我认为可以在此处添加日志打印并让 apiserver 记录每个请求的 etcd 地址。

0 投票
2 回答
5951 浏览

kubernetes - 为什么我需要将 ETCDCTL_API=3 放在 etcdctl 前面才能使 etcdctl 快照保存工作?

我在硬件上进行了 Kubernetes 的定制安装,并将其成功安装在 Hyper V 中的 2 节点集群上(1 个主 1 个工作人员),一切正常,但是有这件事让我摸不着头脑,我想知道是否有人可以给我洞察为什么会发生。

给了我 etcd v2 版本的帮助,它还给了我以下警告。

警告:未设置环境变量 ETCDCTL_API;默认为 etcdctl v2。设置环境变量 ETCDCTL_API=3 以使用 v3 API 或 ETCDCTL_API=2 以使用 v2 API。

如果我设置环境变量并再次运行命令,它将被忽略:

但如果我这样做

然后它给了我 etcd v3 版本的帮助,我还需要将 ETCDCTL_API=3 放在 etcdctl 快照保存的前面,以便将其识别为有效命令。

为什么是这样?

0 投票
3 回答
11387 浏览

amazon-web-services - etcdctl 抛出错误:超出上下文期限错误

我正在尝试使用 coreos cloud-config 在 AWS 上创建一个单节点 etcd 集群。我创建了一个 Route53 记录集,其值etcd.uday.com具有指向 ec2 实例的 ELB 的别名。Etcd 运行成功,但是当我运行 etcd member list 命令时出现以下错误

但是,它会在将--insecure-skip-tls-verify标志添加到etcdctl member list命令时列出成员。我已经cfssl使用以下配置生成了证书

ca.json

ca.config

etcd-member.json

etcd-client.json

我的 etcd-member.service systemd 单元 cloudconfig 如下

证书生成错误还是我错过了什么?

0 投票
0 回答
205 浏览

kubernetes - Flanneld 在公共接口 udp 端口​​ 8472 上监听可以吗?

安全方面,可以flanneld监听公共接口udp端口8472吗?

通常kubernetes节点位于中,隐藏在数十道防火墙后面,它们大多在本地虚拟网络中运行,并且只有在管理员手动批准的情况下才会向公众公开端口。

但是在这里我有一个bare-metal直接连接到互联网的服务器,我不确定是否应该添加防火墙规则来阻止来自外部的连接(默认fw策略是ACCEPT)。

例如,我已配置etcd3为在 上侦听客户端连接127.0.0.1,此外,客户端必须使用证书对自己进行身份验证tls。但是flannel似乎没有任何身份验证/授权机制。

我知道flanneld传输层中运行。因此,它具有来自先前的信息。那么它会尝试从不在的 IP 中删除任何连接etcd吗?

现在我的最终意图是创建一个单节点 kubernetes“集群”。

0 投票
0 回答
316 浏览

c++ - C++ 共享库在与 C 应用程序链接时给出浮点异常

背景:

etcd client一个用于与 API 进行通信的 C++ 库etcd server,为了在 C 应用程序中使用这个库,我们在这个库上编写了 C++ 包装器,以便它可以被 C 应用程序调用。

使用以下命令创建了一个共享库:

将此库放置到默认库路径/usr/local/lib并使用sudo ldconfig.

现在使用这个etcd_c++库 API,编写了一个 C 代码来将简单的键值插入到etcd keyspace. 使用以下命令编译:

编译顺利。grpc++但是在执行生成的二进制文件时,它会在库中给出浮点异常。

问题:

  1. 和图书馆有什么floating point exception关系?
  2. 我们认为这可能是 C 到 C++ 转换的问题,但是当使用相同的包装 API 将相同的 C 代码转换为 C++ 时。给出floating point exception.Now 如果我们用直接库 API 替换包装器 API grpc++,在 C++ 代码中,它可以正常工作。是链接问题吗?

编译 C++ 应用程序:

编辑:一些发现,https ://bugs.launchpad.net/ubuntu/+source/grpc/+bug/1797000

虽然我们没有使用-Wl,-Bsymbolic-functions选项,但问题与上面有些相似。

0 投票
0 回答
69 浏览

kubernetes - 由于对等方期望旧证书,etcd 3rd pod 未在主节点上安排

需要提示来解决两个 etcd 服务器 pod 上的 etcd 证书问题

我有 2(3) 个 etcd 服务器 pod,这些是报告第 3 个 pod 的 x.509 证书适用于etc.test1.com而不适用于etc.test2.com

所以,我的假设是,问题是 etcd 服务器 pod 2 和 3 以某种方式期望旧的证书 dns 名称而不是新的证书 dns 名称值,即 etc.test2.com>

这导致第三个 pod 永远不会被接受为有效的对等点,并且 pod 永远不会被安排在节点上。

任何提示如何重置两个期待旧证书并开始期待新证书的 PODS?

下面是来自正在运行的 etcd 服务器 pod 的错误。

此外,集群会在单个 etcd 服务器 pod 上工作还是需要 3 个?

0 投票
0 回答
627 浏览

dns - 由于找不到 etcd 本地成员,etcd 无法设置集群

我正在尝试在 Ubuntu 18.04 主机上设置集群。使用 DNS 进行服务器发现时出现以下错误。

error setting up initial cluster: cannot find local etcd member "etcd-1" in SRV records

我已经按照文档进行操作,感觉我已经正确完成了所有操作,但是我是设置本地 dns 的新手(使用 bind9),无法判断我在这里做错了什么。我已经尝试改变我的 dns 但无法解决问题。该问题仅在尝试发现本地节点时发生...

这是 _etcd-server 的 SRV 记录

我的 _etcd-client-ssl 的 SRV 记录

我的 A 记录

这是我的 etcd.service 文件内容

包含错误的 journalctl 日志

对于它的价值,这是我的名称服务器上的 dns 配置。 https://gist.github.com/spstratis/1e89f867d86c6b37dc15387ccd310fcc