问题描述
在按照Kelsey Hightower的《Kubernetes the Hard Way》教程在AWS上设置Kubernetes时,遇到了在第一个控制平面节点上引导etcd的问题。错误消息中有两行引起了他的关注:
1. The node is already initialized as member, starting as member..
2. couldn’t find local name in the initial cluster configuration
他尝试删除数据目录并重新初始化,但仍然出现相同的错误消息。他想知道是否从数据目录以外的其他地方获取了旧的配置数据。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据回答1,这个问题可能是由于--initial-cluster
列表与提供的本地名称不匹配导致的。在按照教程操作时,请仔细检查配置。
方案2
根据回答2,第一个问题可能是由于一些其他故障排除步骤导致的,没有更多的信息很难提出建议。但第二个问题几乎可以确定是因为在--initial-cluster
列表中没有提供自己的名称。在AWS的DNS返回完整的主机名(如ip-10-20-30-40.us-east-2.compute.internal
)给etcd,以避免将来在etcd成员尝试查找自己的名称时出现问题。当你到达那部分时,如果选择使用cloud-provider=aws
,你也需要给节点名称提供完整的主机名。
如果这是你开始使用Kubernetes的旅程,那么这是建立与etcd未来关系的好方法,因为它将是无尽痛苦和不透明消息的源泉。我还鼓励你暂停一下,阅读etcd的文档,因为对etcd的需求、如何调试它、如何从中恢复以及如何使用etcdctl将在你未来的Kubernetes生命周期中产生回报。