我在EKS群集中创建了多个堆栈(节点组),每个组运行在不同的示例类型上(例如,一个组运行在GPU示例上)。我在 mapRoles 中为每个节点组添加了一个条目,该条目属于 aws-auth-cm.yaml 文件。现在,我想在另一个节点组上部署一些 * 部署 *。部署文件如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-1
spec:
replicas: 1
selector:
matchLabels:
component: component-1
template:
metadata:
labels:
component: component-1
spec:
containers:
- name: d1
image: docker-container
ports:
- containerPort: 83
文档显示我可以运行标准命令kubectl apply。有什么方法可以指定组吗?
kubectl apply -f服务器部署.yaml -组节点组1
4条答案
按热度按时间2cmtqfgy1#
您可以使用taints and tolerations来确保pod最终位于正确的节点上,当您有异构节点时,这是一个很好的实践。
例如,在我的部署中,我们有两类节点,一类连接了NVMe SSD,另一类没有。它们的污染程度不同,在顶层运行的部署指定了容忍度,以确保它们只在有特定污染的节点上结束。
例如,节点将具有:
并且必须在这些节点之一上调度的pod必须具有:
设置完成后,只需执行常规的
kubectl apply
,pod就会正确地定位到节点上,注意,这是一种比节点选择器和标签更灵活的方法,因为它可以给予更细粒度的控制和可配置的逐出行为。e3bfsja22#
遗憾的是,您提到的一些东西并不存在,但您可以阅读有关Affinity的信息,它应该可以解决您的问题。
TL;DR您必须在节点上添加标签或使用现有标签,并使用这些标签将pod分配给正确的节点。
假设标签为
beta.kubernetes.io/instance-type=highmem
mjqavswn3#
nodeSelector也应该适用于此操作,只要您已经标记了节点
示例和更多信息请点击此处:https://eksworkshop.com/beginner/140_assigning_pods/node_selector/和此处https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
xtupzzrd4#
EKS会自动为节点组中的节点添加标签,您可以使用该标签来选择将您的pod分配到哪个节点组。
要使用上面提供的yaml实现这一点,请像这样扩展它:
(我只添加了最后两行。)
有关一般机制的更多详细信息,请参见弗拉基米尔在其回答中提供的链接。