Kubernetes功能 - 决定在哪个工作站上部署哪个pod

时间:2018-04-13 07:00:49

标签: kubernetes

我正在探索kubernetes,我发现当创建pod时,master会自动将它分配给集群中的某个worker(我猜是随机猜测)。

但是,如果worker1(低CPU规格)过载,它最终会将pod扩展到worker2(高端CPU规格)。我知道每次pod都会被重载并转移到这个高端工作者,但是master仍然会在worker1上初始化pod。

是否有任何功能可以让我配置主服务器,使其直接在高端工作人员上部署pod而不是将其部署在弱系统上,然后转移到更好的系统?

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点,这取决于你的环境。

如果您只想将广告连播部署到特定节点,则可以NodeSelectors。这假设您的集群中的节点以合理的方式标记,如果您在AWS等云环境中,则只需指定实例类型:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    beta.kubernetes.io/instance-type: c4.xlarge

更精细的处理方法是使用Node Affinity,但考虑到您只想将工作负载固定到特定计算机,这可能会超出顶部。

要考虑的另一件事是为什么正在移动您的广告连播。如果您没有为您的广告连播设置container resources,请考虑这样做。举个例子:

apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: db
    image: mysql
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  - name: wp
    image: wordpress
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

指定容器所需的资源允许调度程序根据所需资源更好地确定pod的位置。如果您根据其最大使用量为pod指定容器资源,则调度程序将意识到它应该将pod放在更强大的节点上,