搭建高可用Kubernetes集群时Etcd集群启动失败(Master节点3报超时错误)
搭建高可用Kubernetes集群时Etcd集群启动失败(Master节点3报超时错误)
我正在按照《Kubernetes Multi-Master HA Cluster with kubeadm》这篇指南搭建高可用K8s集群,集群配置如下:
- 3个Master节点:节点3、节点4、节点5
- 4个Worker节点:节点2、节点6、节点7、节点8(其中一个Worker节点作为HAProxy负载均衡器)
在完成「Installing and configuring Etcd on all 3 Master Nodes」章节的第6步时,我遇到了问题:
- Master节点3执行相关命令后出现以下超时错误:
{"level":"warn","ts":"2023-03-28T17:21:07.929-0700","caller":"clientv3/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"endpoint://client-beafcd7b-fbf5-4c3e-b9ce-5c1032e26041/127.0.0.1:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = context deadline exceeded"} Error: context deadline exceeded
- Master节点4和节点5则能正常返回Etcd集群成员列表:
162974ed2b5b12b2, started, 192.168.60.4, https://192.168.60.4:2380, https://192.168.60.4:2379, false 5642d9d9da8c08a3, started, 192.168.60.3, https://192.168.60.3:2380, https://192.168.60.3:2379, false 6ffc3bfbd773170f, started, 192.168.60.5, https://192.168.60.5:2380, https://192.168.60.5:2379, false
以下是三个Master节点的etcd.service配置文件:
Master节点3的etcd.service
[Unit] Description=etcd Documentation=https://github.com/coreos [Service] ExecStart=/usr/local/bin/etcd \ --name 192.168.60.3 \ --cert-file=/etc/etcd/kubernetes.pem \ --key-file=/etc/etcd/kubernetes-key.pem \ --peer-cert-file=/etc/etcd/kubernetes.pem \ --peer-key-file=/etc/etcd/kubernetes-key.pem \ --trusted-ca-file=/etc/etcd/ca.pem \ --peer-trusted-ca-file=/etc/etcd/ca.pem \ --peer-client-cert-auth \ --client-cert-auth \ --initial-advertise-peer-urls https://192.168.60.3:2380 \ --listen-peer-urls https://192.168.60.3:2380 \ --listen-client-urls https://192.168.60.3:2379,http://127.0.0.1:2379 \ --advertise-client-urls https://192.168.60.3:2379 \ --initial-cluster-token etcd-cluster-0 \ --initial-cluster 192.168.60.3=https://192.168.60.3:2380,192.168.60.4=https://192.168.60.4:2380,192.168.60.5=https://192.168.60.5:2380 \ --initial-cluster-state new \ --data-dir=/var/lib/etcd Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Master节点4的etcd.service
[Unit] Description=etcd Documentation=https://github.com/coreos [Service] ExecStart=/usr/local/bin/etcd \ --name 192.168.60.4 \ --cert-file=/etc/etcd/kubernetes.pem \ --key-file=/etc/etcd/kubernetes-key.pem \ --peer-cert-file=/etc/etcd/kubernetes.pem \ --peer-key-file=/etc/etcd/kubernetes-key.pem \ --trusted-ca-file=/etc/etcd/ca.pem \ --peer-trusted-ca-file=/etc/etcd/ca.pem \ --peer-client-cert-auth \ --client-cert-auth \ --initial-advertise-peer-urls https://192.168.60.4:2380 \ --listen-peer-urls https://192.168.60.4:2380 \ --listen-client-urls https://192.168.60.4:2379,http://127.0.0.1:2379 \ --advertise-client-urls https://192.168.60.4:2379 \ --initial-cluster-token etcd-cluster-0 \ --initial-cluster 192.168.60.3=https://192.168.60.3:2380,192.168.60.4=https://192.168.60.4:2380,192.168.60.5=https://192.168.60.5:2380 \ --initial-cluster-state new \ --data-dir=/var/lib/etcd Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Master节点5的etcd.service
[Unit] Description=etcd Documentation=https://github.com/coreos [Service] ExecStart=/usr/local/bin/etcd \ --name 192.168.60.5 \ --cert-file=/etc/etcd/kubernetes.pem \ --key-file=/etc/etcd/kubernetes-key.pem \ --peer-cert-file=/etc/etcd/kubernetes.pem \ --peer-key-file=/etc/etcd/kubernetes-key.pem \ --trusted-ca-file=/etc/etcd/ca.pem \ --peer-trusted-ca-file=/etc/etcd/ca.pem \ --peer-client-cert-auth \ --client-cert-auth \ --initial-advertise-peer-urls https://192.168.60.5:2380 \ --listen-peer-urls https://192.168.60.5:2380 \ --listen-client-urls https://192.168.60.5:2379,http://127.0.0.1:2379 \ --advertise-client-urls https://192.168.60.5:2379 \ --initial-cluster-token etcd-cluster-0 \ --initial-cluster 192.168.60.3=https://192.168.60.3:2380,192.168.60.4=https://192.168.60.4:2380,192.168.60.5=https://192.168.60.5:2380 \ --initial-cluster-state new \ --data-dir=/var/lib/etcd Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
另外,我在Master节点3上尝试使用ETCD v2版本的命令查询成员列表时,也得到了错误:
client: etcd cluster is unavailable or misconfigured; error #0: client: endpoint http://127.0.0.1:2379 exceeded header timeout ; error #1: dial tcp 127.0.0.1:4001: connect: connection refused
备注:内容来源于stack exchange,提问作者Erika
相关产品推荐
相关产品推荐

