我正在探索kubernetes,我发现当创建pod时,master会自动将它分配给集群中的某个worker(我猜是随机猜测)。
但是,如果worker1(低CPU规格)过载,它最终会将pod扩展到worker2(高端CPU规格)。我知道每次pod都会被重载并转移到这个高端工作者,但是master仍然会在worker1上初始化pod。
是否有任何功能可以让我配置主服务器,使其直接在高端工作人员上部署pod而不是将其部署在弱系统上,然后转移到更好的系统?
答案 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放在更强大的节点上,