我有一些定义Kubernetes服务和部署的kubefiles。当我在GCP上创建一个包含4个节点的集群(从不更改)时,所有小kube-system
个pod都分布在节点上,而不是一次填充一个节点。与我应用我的kubefiles时创建的pod相同。
问题是有时候我有足够的可用部署总CPU,但是它的pod无法配置,因为没有单个节点有那么多空闲。它是碎片化的,如果kube系统的pod都进入一个节点而不是散开,它显然是合适的。
我可以通过使用更大/更少的节点来避免问题,但我觉得我不应该这样做。我还宁愿不处理这种基本测试设置的pod亲和设置。有没有解决方案,可能是一个让它更喜欢按顺序填充节点的设置?就像使用已经打开的牛奶盒而不是每次都打开一个新鲜牛奶一样。
尚未对此进行测试,但我应用文件的顺序可能很重要,这意味着首先应用最大的CPU用户可能有所帮助。但这似乎是一种黑客攻击。
我知道有一些discussion on rescheduling变得复杂,因为他们正在处理一个动态节点池,看起来他们没有准备就绪,所以我猜测没有办法让它重新排列我的豆荚动态。
答案 0 :(得分:2)
您可以编写自己的调度程序。 k8s中几乎所有组件都是可更换的。
我知道你不会。如果您不想处理关联,那么def将不会编写您自己的调度程序。但要知道你有这个选择。
使用GCP原生,尝试让所有pod都设置资源请求和限制。