如何访问etcd中的kubernetes密钥

mon*_*mon 8 etcd kubernetes

如何从etcd获取Kubernetes相关密钥?试图列出etcd中的键,但无法看到相关的键.还在哪里安装了etcdctl?

$ etcdctl
bash: etcdctl: command not found..

$ sudo netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      386/etcd            
tcp        0      0 127.0.0.1:2380          0.0.0.0:*               LISTEN      386/etcd            

$ curl -s http://localhost:2379/v2/keys | python -m json.tool
{
    "action": "get",
    "node": {
        "dir": true
    }
}
Run Code Online (Sandbox Code Playgroud)

背景

通过使用kubeadm在CentOS 7上创建群集来安装Kubernetes 1.8.5 .当我查看etcd入门时,v2/keys看起来是终点.

Nic*_*lay 16

通常你需要etcdctl独自完成.只需etcdctletcd版本页面下载最新的存档.

此外,从Kubernetes版本1.6开始,它使用etcd版本3,因此要获得所有键的列表是:

ETCDCTL_API=3 etcdctl --endpoints=<etcd_ip>:2379 get / --prefix --keys-only
Run Code Online (Sandbox Code Playgroud)

您可以etcdctl v3使用以下方法查找所有操

ETCDCTL_API=3 etcdctl --endpoints=<etcd_ip>:2379 --help
Run Code Online (Sandbox Code Playgroud)

编辑(感谢@leodotcloud):

如果ETCD配置了TLS证书支持:

ETCDCTL_API=3 etcdctl --endpoints <etcd_ip>:2379 --cacert <ca_cert_path> --cert <cert_path> --key <cert_key_path> get / --prefix --keys-only
Run Code Online (Sandbox Code Playgroud)

  • 如果涉及证书,这是一个示例命令:`ETCDCTL_API = 3 etcdctl --endpoints <etd_ip>:2379 --cacert /etc/kubernetes/ssl/kube-ca.pem --cert/etc/kubernetes/ssl /kube-node.pem --key /etc/kubernetes/ssl/kube-node-key.pem get/--prefix --keys-only`.如果它是如何部署的,那么可以从etcd容器内部运行此命令. (5认同)

vdb*_*oor 7

访问Docker容器,并运行以下命令:

ETCDCTL_API=3 etcdctl --endpoints 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 get / --prefix --keys-only