问题标签 [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.
go - etcd 监视不同的客户端
我很难与etcd
watch
客户组合一起工作。
什么有效:我Watch
在golang
客户端做,我put
也在那里做。然后观察寄存器变化。如果我etcdctl
以相同的方式使用,即在命令行中同时观看/收听,它也可以工作。
什么不起作用:我从命令行发布并在 go 中观看,反之亦然。
- 看命令行,放 golang: 不起作用
- 观看命令行,输入命令行:有效
- 看golang,输入命令行:不起作用
- 看 golang,把 golang: 工作
“不起作用”是指未触发观察者。
我正在玩的 Go 代码(你可以像这样运行go run main.go (true|false) (true|false))
:
etcdctl
我用来发布/观看的命令:
更新:
手表:
etcd3 - 写入 etcd v3 基准测试中的所有成员
以下是用于基准测试“写入所有成员”的内容。
我的理解是只有leader听写请求。那么如何写入 etcd 集群的所有成员呢?
rest - 如何使用etcd v3 restful api观看
我正在尝试使用 etcdv3 restful api 观看密钥,遵循etcd/Documentation/dev-guide/api_grpc_gateway.md,但它似乎不适用于观看。
手表不会有反应。
这是我的 docker-compose.yml:
kubernetes - 有没有办法确定 kubernetes apiserver 正在与哪个 etcd 主机通信?
只有 apiserver 直接与 etcd 对话。在 etcd 集群中有很多主机。我想看看 apiserver 正在与哪个 etcd 主机通信。对于每个 api 资源(如 Pod 或 Node),这可能会有所不同。我更喜欢查看每个请求的 etcd 主机信息。
具体来说,kubernetes 1.6.13 和 etcd 3.1.14 使用 v3 存储。
我努力了:
在 kubernetnes api 服务器上启用 etcd 客户端和 grpc 日志记录。
我认为 grpc 只记录意外事件。同样适用于 etcd clientv3。我无法获得有关连接的 etcd 端的信息。
GODEBUG=http2debug=2
在 api 服务器上启用 http2 调试日志记录令我惊讶的是,http2 调试日志打印了有关每个请求的大量信息,但我找不到远程端点信息。我仍然对此持怀疑态度,我可能在日志文件中遗漏了提及。不完全确定。
在 etcd 端调试日志。
使用启用调试日志启用调试日志仅打印有关 v2 存储访问的信息。对于 v3 存储,可以使用
http://<host>2379/debug/requests
端点,但在我的 etcd 3.1.14 版本中不可用。我还没有尝试
GODEBUG=http2debug=2
在 etcd 端使用。也许 etcd 上的 http2 日志有我需要的信息。tcpdump
或者tcpflow
apiserver <-> etcd 连接是加密的。这些会显示请求网址吗?我想我没有在转储中看到该信息。
中间人使用 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 地址。
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 快照保存的前面,以便将其识别为有效命令。
为什么是这样?
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 如下
证书生成错误还是我错过了什么?
kubernetes - Flanneld 在公共接口 udp 端口 8472 上监听可以吗?
安全方面,可以flanneld
监听公共接口udp
端口8472
吗?
通常kubernetes
节点位于云中,隐藏在数十道防火墙后面,它们大多在本地虚拟网络中运行,并且只有在管理员手动批准的情况下才会向公众公开端口。
但是在这里我有一个bare-metal
直接连接到互联网的服务器,我不确定是否应该添加防火墙规则来阻止来自外部的连接(默认fw
策略是ACCEPT
)。
例如,我已配置etcd3
为在 上侦听客户端连接127.0.0.1
,此外,客户端必须使用证书对自己进行身份验证tls
。但是flannel
似乎没有任何身份验证/授权机制。
我知道flanneld
在传输层中运行。因此,它具有来自先前的信息。那么它会尝试从不在的 IP 中删除任何连接etcd
吗?
现在我的最终意图是创建一个单节点 kubernetes
“集群”。
c++ - C++ 共享库在与 C 应用程序链接时给出浮点异常
背景:
etcd client
一个用于与 API 进行通信的 C++ 库etcd server
,为了在 C 应用程序中使用这个库,我们在这个库上编写了 C++ 包装器,以便它可以被 C 应用程序调用。
使用以下命令创建了一个共享库:
将此库放置到默认库路径/usr/local/lib
并使用sudo ldconfig
.
现在使用这个etcd_c++
库 API,编写了一个 C 代码来将简单的键值插入到etcd keyspace
. 使用以下命令编译:
编译顺利。grpc++
但是在执行生成的二进制文件时,它会在库中给出浮点异常。
问题:
- 和图书馆有什么
floating point exception
关系? - 我们认为这可能是 C 到 C++ 转换的问题,但是当使用相同的包装 API 将相同的 C 代码转换为 C++ 时。给出
floating point exception
.Now 如果我们用直接库 API 替换包装器 APIgrpc++
,在 C++ 代码中,它可以正常工作。是链接问题吗?
编译 C++ 应用程序:
编辑:一些发现,https ://bugs.launchpad.net/ubuntu/+source/grpc/+bug/1797000
虽然我们没有使用-Wl,-Bsymbolic-functions
选项,但问题与上面有些相似。
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 个?
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