Kubernetes ETCD kubeadm getsockopt:连接被拒绝

Kubernetes ETCD kubeadm getsockopt:连接被拒绝,kubernetes,etcd,kubeadm,Kubernetes,Etcd,Kubeadm,我想使用kurnetes集群中etcd吊舱的etcdctl功能,但我不能。我已经从kubeadm安装了kubernetes,我有一个主节点和一个节点 当我从我的etcd盒内部尝试命令etcdctl时,我会得到以下错误: 客户端:etcd群集不可用或配置错误 错误#0:格式错误的HTTP响应“\x15\x03\x01\x00\x02\x02” 错误#1:拨打tcp 127.0.0.1:4001:getsockopt:连接被拒绝 但当我检查我的etcd吊舱日志时,它看起来很健康: 看起来您有etcd

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

当我从我的etcd盒内部尝试命令etcdctl时,我会得到以下错误:

客户端:etcd群集不可用或配置错误
错误#0:格式错误的HTTP响应“\x15\x03\x01\x00\x02\x02”
错误#1:拨打tcp 127.0.0.1:4001:getsockopt:连接被拒绝

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


看起来您有
etcd
https://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
的3.x版,因此必须通过提供
etcdctl\u API
环境变量来告诉
etcdctl

编辑:

供参考:

测试上述命令时,我使用的是
kubeadm
version 1.11.1,它在运行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成员列表


你从库伯内特斯那里暴露了你的ETCD吗?因为它在集群内,可能无法侦听本地主机上的端口4001。这似乎更好,但仍然存在问题。我有以下错误消息:
警告:忽略用户提供的CA的服务器名以实现向后兼容性是不推荐的错误:grpc:拨号时超时
@Yummel很好,您至少向前迈出了一步!这可能是TLS身份验证问题。。也许我在回答时使用的证书是错误的。AFAIK
kubeadm
生成具有正确SAN(主体备用名称)的证书,其中包括
127.0.0.1
。使用以下命令检查SAN:
openssl x509-in/etc/kubernetes/pki/etcd/server.crt-text-noout
,在x509v2扩展部分中查找它们。在
kubeadm
为etcd生成的清单文件(yaml)中,配置了一个活动探测,使用
etcdctl
命令测试一次。那里使用的证书可能有效。@Yummel我试图使用使用
kubeadm init
初始化的Ubuntu 18.04主节点重现您的错误,但没有成功,只是为了访问
etcd
容器。我在
etcd
3.2.18版上一切正常,大约5个月前,他们在
kubeadm
中把
etcd
的默认版本从3.1.12升级到3.2.18,如果你升级到最新版本(我得到了1.11.1)并重新运行你的集群,效果可能会更好。另外,关于
ServerName
的警告已在最新版本的
etcd
中消失,据我所知,他们已将其删除。好的,谢谢您的回答!我已经检查了SAN,它是
localhost
,但我只有
v3
版本,而不是
v2
。然后我检查了manisfest,并尝试运行相同的命令而不使用success@Yummel看起来不错,我想,如果您使用
memberlist
而不是
getfoo
发出
etcdctl
命令,那么您将看到
etcd
集群成员的列表,对吗?在
etcd
3.2.18中,我的答案中的命令使用server.key和server.crt文件进行身份验证,工作正常,但对您而言,它最终会导致拨号时
超时
错误。