有没有办法确定kubernetes apiserver正在与哪个etcd主机通信?
只有apiserver直接与etcd对话。在etcd集群中有许多主机。我想查看apiserver正在与哪个etcd主机通信。对于每个api资源(如Pod或节点),这可能是不同的。我更喜欢查看每个请求的etcd主机信息 具体来说,kubernetes 1.6.13和etcd 3.1.14使用v3存储 我试过:有没有办法确定kubernetes apiserver正在与哪个etcd主机通信?,kubernetes,etcd,etcd3,Kubernetes,Etcd,Etcd3,只有apiserver直接与etcd对话。在etcd集群中有许多主机。我想查看apiserver正在与哪个etcd主机通信。对于每个api资源(如Pod或节点),这可能是不同的。我更喜欢查看每个请求的etcd主机信息 具体来说,kubernetes 1.6.13和etcd 3.1.14使用v3存储 我试过: 在kubernetnes api服务器上启用etcd客户端和grpc日志记录 我认为grpc只记录意外事件。etcd也是如此 客户3。我无法获得有关etcd方面的信息 连接 使用api服务器
GODEBUG=http2debug=2
启用http2调试日志记录
令我惊讶的是,http2调试日志打印了很多关于每个请求的信息,但我找不到远程端点信息。我仍然对此持怀疑态度,我可能在日志文件中遗漏了一点。不完全确定http://2379/debug/requests
endpoint,但这在我的etcd 3.1.14版本中不可用GODEBUG=http2debug=2
。也许etcd上的http2日志中有我需要的信息tcpdump
或tcpflow
apiserver etcd连接已加密。这些会显示请求url吗?我想我没有在垃圾堆里看到这些信息更新: 关于使用基于
lsof
的方法:
使用
lsof
,我们可以一次列出具有端点信息的连接。我认为lsof
输出中没有足够的信息来获取每个请求的端点信息。Apiserver打开了许多到etcd的连接。看看代码,我觉得这个观察很合理。请参见中的NewStorage
连接看起来像这样
$sudo lsof-
p 20816 | grep :2379 | head -n 5
hyperkube 20816 root 3u IPv4 58093240 0t0 TCP compute-master7001.dsv31.boxdc.net:36360->compute-etcd7001.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 5u IPv4 58085987 0t0 TCP compute-master7001.dsv31.boxdc.net:26005->compute-etcd7002.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 6u IPv4 58085988 0t0 TCP compute-master7001.dsv31.boxdc.net:55650->compute-etcd7003.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 7u IPv4 58102030 0t0 TCP compute-master7001.dsv31.boxdc.net:36366->compute-etcd7001.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 8u IPv4 58085990 0t0 TCP compute-master7001.dsv31.boxdc.net:55654->compute-etcd7003.dsv31.boxdc.net:2379 (ESTABLISHED)
........
看这个,我不知道apiserver和etcd之间的每个请求使用哪个etcd
更新:
我认为在kubernetes 1.6.13附带的etcdv3客户端代码中,
grpc.Balancer.Get
函数返回用于每个grpc请求的端点地址。我认为可以添加日志打印,并使apiserver日志成为每个请求的etcd地址 查找apiserver的pid
ps aux|grep apiserver
然后使用lsof
查看打开的套接字连接
lsof-p$PID | grep:2379
我认为lsof
输出中没有足够的信息。相应地更新了我的问题。
p 20816 | grep :2379 | head -n 5
hyperkube 20816 root 3u IPv4 58093240 0t0 TCP compute-master7001.dsv31.boxdc.net:36360->compute-etcd7001.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 5u IPv4 58085987 0t0 TCP compute-master7001.dsv31.boxdc.net:26005->compute-etcd7002.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 6u IPv4 58085988 0t0 TCP compute-master7001.dsv31.boxdc.net:55650->compute-etcd7003.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 7u IPv4 58102030 0t0 TCP compute-master7001.dsv31.boxdc.net:36366->compute-etcd7001.dsv31.boxdc.net:2379 (ESTABLISHED)
hyperkube 20816 root 8u IPv4 58085990 0t0 TCP compute-master7001.dsv31.boxdc.net:55654->compute-etcd7003.dsv31.boxdc.net:2379 (ESTABLISHED)
........