Kubernetes

etcd 的 TLS 握手問題

  • August 9, 2020

我們正在為 k8s 集群使用外部 etcd 集群。我們將 master 連接到此 etcd 伺服器,但收到

"tls: first record does not look like a TLS handshake"

如何解決這個問題?(對於 eksctl 方面,所有在具有相同證書的 etcd 伺服器上都可以正常工作)

ETCDCTL_API=3 /usr/local/bin/etcdctl member list   --endpoints=https://127.0.0.1:2379   --cacert=/etc/etcd/ca.crt   --cert=/etc/etcd/etcd-server.crt   --key=/etc/etcd/etcd-server.key
   b1fa8ebad0f4fa6, started, etcd-kube-cluster-1, https://10.105.113.*:2380, https://10.105.113.*:2379, false
   984a08591dda4911, started, etcd-kube-cluster-3, https://10.105.114.*:2380, https://10.105.114.*:2379, false
   b55b37a2544c7daa, started, etcd-kube-cluster-2, https://10.105.113.*:2380, https://10.105.113.*:2379, false

Kube-api 伺服器清單更新為相同的證書

該錯誤消息暗示 ETCD 伺服器拒絕您的連接,因為 URL 中的證書或 CN 對於配置的證書無效。

我想問題出在 etcd 伺服器中配置的 subjectAltName 或 CN,您不能在 etcd-server 證書的 subjectAltName 中包含 127.0.0.1 IP。您可以執行以下 2 個選項中的任何一個來使其工作。

  1. 如果您想使用 127.0.0.1 IP 進行連接,則需要將此地址添加為 etcd 伺服器證書中的 subjectAltName。
  2. 我假設您已經將所有 etcd 伺服器 IP 添加為 subjectAltName,因此請嘗試使用 etcd 伺服器 IP/DNS 名稱(而不是 127.0.0.1)進行連接。

謝謝,

引用自:https://serverfault.com/questions/1029237