【发布时间】:2020-04-05 20:09:59
【问题描述】:
有没有一种方法可以让我从kubernetes 主节点访问etcd 端点,而无需实际进入etcd 集群?
例如,我可以对etcd 端点进行健康卷曲(使用ssh)或查看端点并从kubernetes 主节点获取返回状态? (即没有真正进入etcd master)
【问题讨论】:
标签: kubernetes etcd
有没有一种方法可以让我从kubernetes 主节点访问etcd 端点,而无需实际进入etcd 集群?
例如,我可以对etcd 端点进行健康卷曲(使用ssh)或查看端点并从kubernetes 主节点获取返回状态? (即没有真正进入etcd master)
【问题讨论】:
标签: kubernetes etcd
这实际上取决于您如何配置集群。实际上,etcd 集群完全可以在 k8s 集群之外工作。 etcd 也可以配置 TLS 身份验证,因此您需要提供证书文件才能通过 curl 发出任何请求。 etcdctl 可以满足您的一切需求。比如:
~# export ETCDCTL_API=3
~# export ETCDCTL_ENDPOINTS=https://kub01.msk.test.ru:2379,https://kub02.msk.test.ru:2379,https://kub03.msk.test.ru:2379
~# etcdctl endpoint status
https://kub01.msk.test.ru:2379, e9bc9d307c96fd08, 3.3.13, 10 MB, true, 1745, 17368976
https://kub02.msk.test.ru:2379, 885ed66440d63a79, 3.3.13, 10 MB, false, 1745, 17368976
https://kub03.msk.test.ru:2379, 8c5c20ece034a652, 3.3.13, 10 MB, false, 1745, 17368976
或使用 TLS:
~# etcdctl endpoint health
client: etcd cluster is unavailable or misconfigured; error #0: remote error: tls: bad certificate
; error #1: remote error: tls: bad certificate
; error #2: remote error: tls: bad certificate
# need to export environment vars
~# export ETCDCTL_CACERT=<PATH_TO_FILE>
~# export ETCDCTL_CERT=<PATH_TO_FILE>
~# export ETCDCTL_KEY=<PATH_TO_FILE>
~# etcdctl endpoint health
https://kub01.msk.test.ru:2379 is healthy: successfully committed proposal: took = 2.946423ms
https://kub02.msk.test.ru:2379 is healthy: successfully committed proposal: took = 1.5883ms
https://kub03.msk.test.ru:2379 is healthy: successfully committed proposal: took = 1.745591ms
【讨论】:
您可以在不实际进入 pod 的情况下将命令运行到 pod 中,例如,如果我必须在 etcd pod 中运行 ls -l,我会这样做
kubectl exec -it -n kube-system etcd-kanister-control-plane -- ls -l
同样你可以运行任何命令而不是ls -l
【讨论】: