Kubernetes 的 ETCD 集群配置:应该考虑哪一个?

Kubernetes 的 ETCD 集群配置:应该考虑哪一个?

我想知道如何为 Kubernetes 部署 ETCD 集群。似乎有两个不同的文档,我不知道必须考虑哪一个或它们各自的影响。

来自Kubernetes 文档对于多集群 etcd,建议像这样启动

etcd --listen-client-urls=http://$IP1:2379,http://$IP2:2379,http://$IP3:2379,http://$IP4:2379,http://$IP5:2379 --advertise-client-urls=http://$IP1:2379,http://$IP2:2379,http://$IP3:2379,http://$IP4:2379,http://$IP5:2379

这里--listen-client-urls--列出了所有 ETCD 端点,与--advertise-client-urlsKubernetes 文档中所述相同,该命令只运行一次。

来自ETCD 文档该命令必须在每个节点上运行

$ etcd --name infra0 --initial-advertise-peer-urls https://10.0.1.10:2380 \
  --listen-peer-urls https://10.0.1.10:2380 \
  --listen-client-urls https://10.0.1.10:2379,https://127.0.0.1:2379 \
  --advertise-client-urls https://10.0.1.10:2379 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster infra0=https://10.0.1.10:2380,infra1=https://10.0.1.11:2380,infra2=https://10.0.1.12:2380 \
  --initial-cluster-state new \
  --client-cert-auth --trusted-ca-file=/path/to/ca-client.crt \
  --cert-file=/path/to/infra0-client.crt --key-file=/path/to/infra0-client.key \
  --peer-client-cert-auth --peer-trusted-ca-file=ca-peer.crt \
  --peer-cert-file=/path/to/infra0-peer.crt --peer-key-file=/path/to/infra0-peer.key

我们可以注意到,它只--listen-client-urls--包含当前节点的IP地址,其他参数在Kubernetes文档中并不存在。

它们为什么如此不同?你能帮我理解一下吗?哪一个是好的?什么时候必须使用它们?

答案1

简而言之,我建议按照etcd文档来设置etcd集群。


让我们首先详细了解一下这些标志的含义。

--listen-client-urls- 这是一个member的标志(与节点级别相关):

用于监听客户端流量的 URL 列表。此标志告知 etcd 接受来自指定方案://IP:port 组合上的客户端的传入请求。方案可以是 http 或 https。如果指定 0.0.0.0 作为 IP,etcd 将在所有接口上监听给定端口。如果指定了 IP 地址和端口,etcd 将监听给定端口和接口。可以使用多个 URL 来指定要监听的地址和端口数量。etcd 将响应来自任何列出的地址和端口的请求。

etcd-监听客户端url

--advertise-client-url- 这是一个cluster范围标志(它本身就说明了这一点):

列出此成员的客户端 URL,以通告给集群的其余部分。这些 URL 可以包含域名。

etcd-广告客户端网址

另请参阅问答 - 旗帜之间的区别


至于您分享的 kubernetes 文档,这看起来不合逻辑,因为etcd命令应该在每个节点上运行,但是在这个例子中,不清楚其他节点将如何获取这些信息。

另外,为了简单起见和快速启动,他们提供了这样的配置,并且etcd应该忽略未使用的 IP(例如,本地端口上用于监听客户端流量的其他节点的 IP)。如果所有节点都可以通告所有节点的 IP,那就应该不错了etcd

然而etcd 文档明确说明首先etcd每个节点上只有本地地址 - 我认为这是正确的方法

我建议参考设置集群。本文档介绍了如何使用设置 HA 集群kubeadm(可能不是最方便的方法,但我能够设置它并开始工作)。正如您在本示例中所见,配置中仅显示节点的 IP,这与文档etcd一致。etcd

有用的链接:

相关内容