配置复制控制器时如何需要每个min / kublet一个pod?

时间:2015-10-27 19:41:00

标签: labels kubernetes

我有4个节点(kubelets)配置了标签role=nginx

master ~ # kubectl get node
NAME          LABELS                                          STATUS
10.1.141.34   kubernetes.io/hostname=10.1.141.34,role=nginx   Ready
10.1.141.40   kubernetes.io/hostname=10.1.141.40,role=nginx   Ready
10.1.141.42   kubernetes.io/hostname=10.1.141.42,role=nginx   Ready
10.1.141.43   kubernetes.io/hostname=10.1.141.43,role=nginx   Ready

我修改了复制controller并添加了这些行

spec:
  replicas: 4
  selector:
    role: nginx

但是当我开火时,我在一台主机上获得了2个吊舱。我想要的是每台主机上有1个pod。我错过了什么?

3 个答案:

答案 0 :(得分:7)

在DaemonSet可用之前,您还可以指定pod使用主机端口并将复制控制器中的副本数设置为大于节点数的值。主机端口约束将允许每个主机只有一个pod。

答案 1 :(得分:2)

我能够通过修改标签来实现这一点,如下所示

master ~ # kubectl get nodes -o wide
NAME          LABELS                                           STATUS
10.1.141.34   kubernetes.io/hostname=10.1.141.34,role=nginx1   Ready
10.1.141.40   kubernetes.io/hostname=10.1.141.40,role=nginx2   Ready
10.1.141.42   kubernetes.io/hostname=10.1.141.42,role=nginx3   Ready
10.1.141.43   kubernetes.io/hostname=10.1.141.43,role=nginx4   Ready

然后我创建了4个nginx复制控制器,每个控制器都引用了nginx {1 | 2 | 3 | 4}角色和标签。

答案 2 :(得分:1)

复制控制器不保证每个节点有一个pod,因为调度程序将找到最适合每个pod的容器。我想你想要的是DaemonSet controller,它仍处于开发阶段。上面发布的解决方法也可以。