Azure Kubernetes服务:在退出Spot节点池后,如何将POD从Spot节点池移动到常规节点池?
我总共有3个节点池,如下所示:Azure Kubernetes服务:在退出Spot节点池后,如何将POD从Spot节点池移动到常规节点池?,kubernetes,yaml,azure-aks,kubernetes-pod,Kubernetes,Yaml,Azure Aks,Kubernetes Pod,我总共有3个节点池,如下所示: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 2
preference:
matchExpressions:
- key: agentpool
operator: In
values:
- contentspotpool
- weight: 1
preference:
matchExpressions:
- key: agentpool
operator: In
values:
- contentpool
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 2
preference:
matchExpressions:
- key: agentpool
operator: In
values:
- contentspotpool
- weight: 1
preference:
matchExpressions:
- key: agentpool
operator: In
values:
- contentpool
当内容点池被逐出时,我希望内容点池上的pod在内容池上移动。但是,pod被安排在数据库池中
有谁能告诉我怎样才能做到这一点吗
另外,如何设置数据库池,使其拒绝所有新的pod
AKS版本使用-1.18.14我决定提供一个社区维基答案,因为有一个类似的答案,但被作者删除了 在这种情况下,您可以使用: 污染和容忍共同确保POD不会被安排到不适当的节点上。一个或多个污点应用于一个节点;这标志着节点不应接受任何不容忍污染的吊舱 您可以向数据库池中的节点添加
污点
,并指定一个容忍度
,该容忍度仅与污点
匹配,该容忍度仅适用于可在数据库池中调度的POD
我创建了一个简单的示例来说明它是如何工作的 我只有一个工作节点,并且我向该节点添加了一个特定的
污点
:
$ kubectl get nodes
NAME STATUS ROLES AGE
database-pool Ready <none> 6m9s
$ kubectl taint nodes database-pool type=database:NoSchedule
node/database-pool tainted
$ kubectl describe node database-pool | grep -i taint
Taints: type=database:NoSchedule
我创建了两个pod
:web
(不容忍污染
)和容忍的web
(容忍污染
):
最后,我们可以检查哪个Pod
已正确调度:
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
web 0/1 Pending 0 6m13s <none> <none>
web-with-toleration 1/1 Running 0 6m8s 10.76.0.14 database-pool
$kubectl获得吊舱-o宽
名称就绪状态重新启动老化IP节点
web 0/1挂起0 6m13s
运行0 6m8s 10.76.0.14数据库池的容忍度为1/1的web
可以同时使用和污染,以更好地控制特定节点上的
pod
放置
节点关联性是POD的一个属性,它将POD吸引到一组节点上(作为首选项或硬需求)。
污点则相反——它们允许节点排斥一组豆荚
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
web 0/1 Pending 0 6m13s <none> <none>
web-with-toleration 1/1 Running 0 6m8s 10.76.0.14 database-pool