ETCD kubeadm getsockopt:连接被拒绝

ETCD kubeadm getsockopt: connection refused

我想从我的 kurnetes 集群中使用我的 etcd pod 的 etcdctl 功能,但我不能。我已经从 kubeadm 安装了我的 kubernetes,我有 1 个主节点和 1 个节点。

当我从我的 etcd pod 中尝试命令 etcdctl 时,我得到了这些错误:

client: etcd cluster is unavailable or misconfigured;
error #0:malformed HTTP response "\x15\x03\x01\x00\x02\x02" ;
error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused

但是当我检查我的 etcd pod 日志时,它看起来很健康:

看起来您 etcdhttps://127.0.0.1:2379 上侦听客户端连接,据我所知,您启用了客户端证书身份验证。然后您应该能够 运行 以下命令连接到 etcd:

ETCDCTL_API=3 etcdctl member list \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

基本上 etcd 希望您使用客户端证书进行身份验证。

此外,由于您是 etcd 的 运行ning 版本 3.x,您必须通过提供 ETCDCTL_API 环境变量来告诉 etcdctl

编辑:

供参考:

我使用的是 kubeadm 版本 1.11.1,它在服务器 运行ning Ubuntu 18.04 上安装了 etcd 版本 3.2.18 测试上面的命令。

ETCDCTL_API=3 etcdctl --endpoints=localhost:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key member list