Kubernetes特性-决定在哪个工作机上部署哪个pod

Kubernetes特性-决定在哪个工作机上部署哪个pod,kubernetes,Kubernetes,我正在探索kubernetes,我看到当pod被创建时,主机会自动将其分配给集群中随机猜测的某个工作者 但是,如果worker1低CPU规格过载,它最终会将pod扩展到worker2高端CPU规格。我知道每次pod都会过载,并转移到这个高端工作者身上,但大师总是在worker1上初始化pod 是否有任何功能允许我配置主机,使其直接在高端worker上部署POD,而不是在较弱的系统上部署POD,然后切换到更好的系统?有很多方法可以做到这一点,这取决于您的环境 如果您只是想将pod部署到特定节点,您

我正在探索kubernetes,我看到当pod被创建时,主机会自动将其分配给集群中随机猜测的某个工作者

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


是否有任何功能允许我配置主机,使其直接在高端worker上部署POD,而不是在较弱的系统上部署POD,然后切换到更好的系统?

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

如果您只是想将pod部署到特定节点,您可以。这假设集群中的节点以合理的方式进行标记,如果您处于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
一种更复杂的处理方法是使用,但考虑到您只想将工作负载固定到特定的机器上,这可能有些过头了

还有一件事要考虑的是你的吊舱为什么会被移动。如果你没有为你的POD设置,请考虑这样做。例如:

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放置在beefier节点上,

您是在调度程序中配置-algorithm provider还是-policy config??如果不是,k8s使用defaultThank@jaxxstorm提供更多资源的节点,但问题是,pod中运行的应用程序通常会动态重载节点,因此无法设置容器资源,因为我不知道应用程序需要多少资源。如果pod使workerA过载,我将杀死它并将其移动到workerB,如果它使workerB过载,我将杀死它并移动到C,在C中它工作得非常好。有没有什么方法可以让pod在我不手动更改的情况下动态地转到C?