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