我想使用我的kurnetes集群中的etcd pod的etcdctl函数,但我不能。我已经从kubeadm安装了kubernetes,并且我有1个master和1个节点。
当我从我的etcd容器内部尝试命令etcdctl时,出现这些错误:
客户端:etcd群集不可用或配置错误;
错误#0:格式错误的HTTP响应“ \ x15 \ x03 \ x01 \ x00 \ x02 \ x02”;
错误#1:拨打tcp 127.0.0.1:4001:getsockopt:连接被拒绝
但是当我检查etcd pod日志时,它似乎很健康:
答案 0 :(得分:0)
似乎您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
环境变量来告诉ETCDCTL_API
。
编辑:
供参考:
我使用的kubeadm
版本1.11.1在测试上述命令时在运行Ubuntu 18.04的服务器上安装了etcd
的版本3.2.18。
答案 1 :(得分:0)
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成员列表