我在AWS中有一个kubernetes主设置,由ELB平衡。 我使用terraform创建了5-6个实例,并将其设置为kube奴隶并将小节点指向ELB。 当我运行kubectl get节点时,只显示3或4个实例。看起来奴隶注册与主节点失败的几个节点,但所有节点是相同的。
它的随机行为,有时所有奴隶都表现得很好。
答案 0 :(得分:2)
回答我自己的问题 -
我使用 PrivateIP 命名从属节点,并且在作业完成后我动态生成奴隶,将其附加到主服务器,计划容器并销毁从服务器但 I从未从kube中删除这些节点。即:' kubectl删除节点名称'。
所有这些被破坏的从属节点都在“未准备好”中。名称为= PrivateIP的州。
现在,由于奴隶被销毁,PrivateIP将返回AWS IP池,新生成的实例现在可以使用这些IP。
现在,当我生成新的奴隶并尝试将其与master连接时,可能很少有奴隶获得与那些未准备好的奴隶相同的PrivateIP。国家(因为那些奴隶被摧毁,这些知识产权已经被释放)。
因此,Kubernetes过去只是将旧奴隶的状态改为“准备好”。因为我以编程方式等待新的奴隶出现,所以早些时候未被注意的状态。
注意:
销毁意味着终止AWS实例
删除从Kubernetes分离奴隶的意思,即。 kubectl delete node-name
答案 1 :(得分:1)
根据我自己使用AWS和Terraform的经验,这可能是竞争条件。
ELB通常需要比EC2实例更多的时间来做好准备,因此如果出于任何原因,在
您可以通过两种方式缓解这一点:
我需要kubelet
的日志来验证理论当然。