在Kubernetes群集上使用etcdctl时出错:“0”;由未知机构签署的证书”;

在Kubernetes群集上使用etcdctl时出错:“0”;由未知机构签署的证书”;,kubernetes,minikube,etcd,etcdctl,Kubernetes,Minikube,Etcd,Etcdctl,我正在运行minikube,我正在尝试列出我的ETCD上的键 我从github下载了最新的etcdctl客户端: 我尝试使用/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,我正在尝试列出我的ETCD上的键

我从github下载了最新的
etcdctl
客户端:

我尝试使用
/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 /   
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
我以前也收到过同样的错误


你知道有什么问题吗

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

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

您可以在这里找到更多信息:。

在执行命令之前,我需要使用
ETCDCTL_API=3

从这一点上,我看到它在Kubernetes中的使用非常困难。
证书的位置位于:
/etc/kubernetes/pki/etcd

该命令的工作原理如下:

./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 /   
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

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

对于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"