首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库伯内斯奴隶的行为不一致,很少有奴隶没有出现

库伯内斯奴隶的行为不一致,很少有奴隶没有出现
EN

Stack Overflow用户
提问于 2016-05-19 23:33:50
回答 2查看 249关注 0票数 0

我在AWS中有一个kubernetes主设置,由ELB平衡。我使用terraform创建了5-6个实例,并将其设置为kube slaves并将kubelets指向ELB。当我运行kubectl get node时,只显示了3或4个实例。看起来从节点注册到主节点失败了,但所有节点都是相同的。

它的随机行为,有时所有的奴隶都表现得很好。

EN

回答 2

Stack Overflow用户

发布于 2016-05-22 14:00:32

回答我自己的问题-

我使用它们的PrivateIP命名从节点,并动态地产生从节点,将其附加到主节点,调度pod,并在作业完成后销毁从节点我从未从kube中删除这些节点。即:'kubectl delete node-name‘。

所有这些被销毁的从节点在name=PrivateIP中都处于“未就绪”状态。

现在,由于slaves被销毁,PrivateIP被返回到AWS池,新产生的实例现在可以获取这些IP。

现在,当我生成新的从属程序并尝试将其与主机连接时,可能很少有从属程序会获得与处于“未就绪”状态的从属程序相同的PrivateIP (因为这些从属程序已被销毁,而这些IP已被释放)。

因此Kubernetes习惯于将旧slave的状态更改为“Ready”状态,因为我在编程上等待新slave的出现,所以之前没有注意到

注意:

销毁意味着终止AWS实例

Delete表示将slave从Kubernetes ie分离。kubectl delete node-name

票数 2
EN

Stack Overflow用户

发布于 2016-05-21 15:37:31

从我自己使用AWS和Terraform的经验来看,这可能是一种竞争条件。

ELB通常需要比EC2实例更多的时间来准备就绪,因此如果由于任何原因,kubelet在ELB能够提供服务之前启动了,节点将无法注册(“未找到主机”或“错误500”,具体取决于时间)

你可以通过两种方式来缓解这个问题:

  • 使您的kubelet服务/容器在失败时自动重启
  • 在EC2实例和ELB之间创建严格的依赖关系,并对ELB (HTTP调用就足够了)

进行就绪检查

当然,我需要来自kubelet的日志来验证这个理论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37327917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档