3

我正在运行 minikube,我正在尝试列出我的 ETCD 上的密钥。

etcdctl我从github下载了最新的客户端:
https ://github.com/etcd-io/etcd/releases/download/v3.3.18/etcd-v3.3.18-linux-amd64.tar.gz

我尝试使用以下证书运行它/home/myuser/.minikube/certs

./etcdctl --ca-file /home/myuser/.minikube/certs/ca.pem 
          --key-file /home/myuser/.minikube/certs/key.pem 
          --cert-file /home/myuser/.minikube/certs/cert.pem  
          --endpoints=https://10.240.0.23:2379 get / 

我收到一个错误:

错误:客户端:etcd 集群不可用或配置错误;错误 #0:x509:证书由未知机构签名

错误 #0:x509:证书由未知机构签名

我使用了正确的证书吗?

我尝试了不同的证书:

./etcdctl --ca-file /var/lib/minikube/certs/ca.crt 
          --key-file /var/lib/minikube/certs/apiserver-etcd-client.key 
          --cert-file /var/lib/minikube/certs/apiserver-etcd-client.crt 
          --endpoints=https://10.240.0.23:2379 get /   

我从以前收到了同样的错误。

知道有什么问题吗?

4

4 回答 4

3

对于 minikube,etcd 证书的正确路径是:/var/lib/minikube/certs/etcd/ 所以命令将是这样的:

# kubectl -n kube-system exec -it etcd-minikube -- sh -c "ETCDCTL_API=3 ETCDCTL_CACERT=/var/lib/minikube/certs/etcd/ca.crt ETCDCTL_CERT=/var/lib/minikube/certs/etcd/server.crt ETCDCTL_KEY=/var/lib/minikube/certs/etcd/server.key etcdctl endpoint health"
于 2020-10-21T19:15:31.400 回答
0

我需要ETCDCTL_API=3在命令之前使用。我从这个Github
看到它在 Kubernetes 中被使用。 证书的位置在:。
/etc/kubernetes/pki/etcd

该命令应该像这样工作:

ETCDCTL_API=3 ./etcdctl --endpoints=https://172.17.0.64:2379 \
                        --cacert=/etc/kubernetes/pki/etcd/ca.crt \
                        --cert=/etc/kubernetes/pki/etcd/server.crt \
                        --key=/etc/kubernetes/pki/etcd/server.key get / --prefix

我测试了它,它对我有用。

于 2019-12-20T16:12:47.273 回答
0

如果您想转储所有带有完全前缀但来自主机/容器外部的 etcd 条目,您也可以发出(此处用于 minikube/本地测试):

kubectl exec -it \
  -n kube-system etcd-minikube \
  -- sh -c 'ETCDCTL_CACERT=/var/lib/minikube/certs/etcd/ca.crt \
    ETCDCTL_CERT=/var/lib/minikube/certs/etcd/server.crt \
    ETCDCTL_KEY=/var/lib/minikube/certs/etcd/server.key \
    ETCDCTL_API=3  \
    etcdctl \
      get \
      --prefix=true /'
于 2021-10-31T20:10:56.137 回答
-1

尝试执行以下命令: $ cat /etc/etcd.env列出 CA、CERT、KEY 目录(实际路径)。

TLS 设置

ETCD_TRUSTED_CA_FILE=/etc/ssl/etcd/ssl/ca.pem
ETCD_CERT_FILE=/etc/ssl/etcd/ssl/member-k8s-m1.pem
ETCD_KEY_FILE=/etc/ssl/etcd/ssl/member-k8s-m1-key.pem
ETCD_CLIENT_CERT_AUTH=true

然后您将可以更正使用证书。

然后再次运行命令:

./etcdctl --endpoints https://x.x.x.x:2379 
          --ca-file=/etc/ssl/etcd/ssl/ca.pem 
          --cert-file=/etc/ssl/etcd/ssl/member-k8s-m1.pem 
          --key-file=/etc/ssl/etcd/ssl/member-k8s-m1-key.pem

您可以在此处找到更多信息:etcd-certificates

于 2019-12-20T09:27:51.083 回答