当前位置: 首页 > 知识库问答 >
问题:

避免kubernetes调度器在kubernetes集群的单个节点上运行所有吊舱

汪安然
2023-03-14

如何强制调度器以循环方式在节点上运行pod,以便如果任何节点宕机,那么至少有一个节点将NGINX pod处于运行模式

这到底有没有可能?如果可能,我们如何实现这一场景?

共有1个答案

徐凌
2023-03-14

参考资料:Kubernetes在行动第16章。高级调度

具有requiredDuringSchedulingIgnoredDuringExecution的podAntiAfinity可用于防止将相同的pod调度到相同的主机名。如果喜欢更宽松的约束,请使用PreferredDuringSchedulingIgnoredDuringExecution。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 5
  template:
    metadata:
      labels:                                            
        app: nginx                                   
    spec:
      affinity:
        podAntiAffinity:                                 
          requiredDuringSchedulingIgnoredDuringExecution:   <---- hard requirement not to schedule "nginx" pod if already one scheduled.
          - topologyKey: kubernetes.io/hostname     <---- Anti affinity scope is host     
            labelSelector:                               
              matchLabels:                               
                app: nginx        
      container:
        image: nginx:latest

您可以在kubelet配置中为一个节点指定最大的pod数,以便在node down的情况下,它将防止K8S用故障节点的pod使另一个节点饱和。

 类似资料:
  • 我的Kubernetes设置: v1.16.2裸机 1主节点:用于Jenkins master+Docker注册表 5个从节点:用于Jenkins JNPL从节点 我使用kubernetes-plugin来运行奴隶码头代理。标记为“Jenkins=slave”的所有从k8节点。当我将nodeSelector(“Jenkins=slave”)用于podTemplate时,kubernetes总是在同

  • 我已经设置了普罗米修斯,通过跟踪普罗米修斯留档来监控库本内斯的指标。 普罗米修斯现在有很多有用的指标。 但是,我看不到任何引用我的pod或节点状态的指标。 理想情况下-我希望能够绘制pod状态(运行,挂起,CrashLoopBackoff,错误)和节点(NodeNow,就绪)。 这个度量单位在哪里?如果没有,我可以添加到某个地方吗?怎么做?

  • TiDB 是高可用数据库,可以在部分数据库节点下线的情况下正常运行,因此,我们可以安全地对底层 Kubernetes 节点进行停机维护。在具体操作时,针对 PD、TiKV 和 TiDB 实例的不同特性,我们需要采取不同的操作策略。 本文档将详细介绍如何对 Kubernetes 节点进行临时或长期的维护操作。 环境准备: kubectl tkctl jq 注意: 长期维护节点前,需要保证 Kuber

  • 我对container worrld是新手,并试图在两个linux VM中本地设置一个kubernetes集群。在集群初始化期间,它卡在 KubeADM-1.6.0-0.x86_64.rpm KubectL-1.6.0-0.x86_64.rpm Kubelet-1.6.0-0.x86_64.rpm

  • 我创建了一个kubernetes集群进行测试。但不能创建RC。我得到错误:

  • 我试图找到这个问题的答案,但在kubernetes文档或任何问答论坛中都找不到。 我有一个运行有4个节点的kubernetes集群。是否可以创建第二个集群,重用前一个集群中的一个或多个节点?或者一个节点被限制在单个kubernetes集群中? 我正在使用RKE(用于部署k8集群的牧场工具)运行实际的集群,我发现这个问题让我怀疑这种可能性。 感谢您的澄清。