繁体   English   中英

Kops滚动更新失败,主节点“集群未通过验证”

[英]Kops rolling-update fails with “Cluster did not pass validation” for master node

由于某种原因,在通过kops(版本1.13.0)从kubernetes 1.11.9升级到1.12.9之后,我的主节点无法再连接到群集。 在清单中,我升级kubernetesVersion > 1.12.9 -从1.11.9。 这是我唯一要做的更改。 但是,当我运行kops rolling-update cluster --yes是时,出现以下错误:

Cluster did not pass validation, will try again in "30s" until duration "5m0s" expires: machine "i-01234567" has not yet joined cluster.
Cluster did not validate within 5m0s

之后,如果我运行kubectl get nodes我将不再在群集中看到该主节点。

通过切入断开连接的主节点实例进行一些调试,我通过运行sudo cat /var/log/kube-apiserver.log在api服务器日志中发现了以下错误:

controller.go:135] Unable to perform initial IP allocation check: unable to refresh the service IP block: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: connect: connection refused

我怀疑问题可能与etcd有关,因为当我运行sudo netstat -nap | grep LISTEN | grep etcd sudo netstat -nap | grep LISTEN | grep etcd sudo netstat -nap | grep LISTEN | grep etcd没有输出。

任何人都知道如何将主节点重新加入群集或对尝试的事情有建议吗?

我进行了一些研究,但对您的想法却很少:

  1. 如果etcd grep没有输出,则意味着您的etcd服务器已关闭。 检查“已退出” etcd容器的日志| grep Exited | grep etcd | grep Exited | grep etcd | grep Exited | grep etcd然后logs <etcd-container-id>

  2. 尝试我发现的以下指令

1-我使用etcdctl从de etcd集群中删除了旧的master。 您将需要在etcd-server容器上进行连接。

2-在新的主节点上,我停止了kubelet和protokube服务。

3-空Etcd数据目录。 (数据和数据事件)

4-编辑/etc/kubernetes/manifests/etcd.manifests和etcd-events.manifest,将ETCD_INITIAL_CLUSTER_STATE从新更改为现有。

5-从新的主服务器获取名称和PeerURLS,并使用etcdctl在群集上添加新的主服务器。 (etcdctl成员添加“名称”“ PeerULR”)您将需要在etcd服务器容器上进行连接。

6-在新的主服务器上启动kubelet和protokube服务。

  1. 如果不是这种情况,则说明您的证书可能有问题。 它们是在集群创建期间提供的,其中一些具有允许的主节点端点。 如果是这种情况,则需要创建新的证书并将其滚动到api服务器/ etcd群集。

请让我知道是否有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM