我在Azure AKS实例上配置了系统和用户池。我遵循这个指南:
在活动之前,我们只有应用程序和系统荚的系统类型池。
我做了以下步骤:
- gatekeeper-audit
- gatekeeper-controllerkube-系统:
- coredns
- coredns-autoscaler
- metrics-server
- azure-policy
- azure-policy-webhook
- konnectivity-agent
- ama-logs-rs允许在池系统上调度系统荚,因为它们不是在池创建后自动调度的。
现在我注意到,系统吊舱现在也被安排在池系统上,但是我一直在所有其他节点上看到相同的吊舱。即使我残忍地从用户池中删除它们,它们也会立即被重新部署到它们上。行为正确吗?从逻辑上说,如果我有一个池系统,那么所有的吊舱都应该只在那个池上,而用户池上不应该有?
谢谢
发布于 2022-11-15 13:04:09
根据微软的官方文档,这些都是用户节点池和系统节点池的一些特性。
系统节点池:
Must be running Linux.
They can have a minimum of 1 node, but it is recommended to have 2 nodes or 3 if it is your only Linux node pool.
They only support AKS cluster running on Virtual Machine Scale Sets.
The nodes need at least 2 vCPUs and 4GB memory.
They need to support at least 30 pods.
Cannot be made up of Spot VM’s.
Can have multiple system node pools.
If only one system node pool, it cannot be deleted.
Can be changed to a user node pool if you have another system node pool.用户节点池:
User node pools can be either Linux or Windows.
Can scale down to 0 nodes.
Can be deleted with no issues.
Spot VM’s can be used
Can be changed to a system node pool.
Can have as many user node pols as Azure will let you.根据pod定义,除非由DaemonSet控制,否则系统荚将被绑定到系统节点池上。如果系统pod是由DaemonSet控制的,则不管池类型如何,它都被绑定到集群中的每个节点上。我的集群有4个节点。2个系统,2个用户。因此,这些系统荚存在于kube-系统名称空间中,每个节点都有副本。
kubectl get ds -n kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
ama-logs 4 4 4 4 4 <none> 14d
azure-cni-networkmonitor 4 4 4 4 4 <none> 540d
azure-ip-masq-agent 4 4 4 4 4 <none> 540d
kube-proxy 4 4 4 4 4 <none> 540d进一步控制应用程序在系统池中不被调度的行为。您可以通过此添加到系统节点池上,所有应用程序荚都将只在用户节点池上进行调度。
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name systempool \
--node-count 3 \
--node-taints CriticalAddonsOnly=true:NoSchedule \
--mode System发布于 2022-11-15 13:03:08
AKS在调度系统荚时更喜欢系统节点池,但是当系统节点池没有足够的容量来调度所有的系统结荚()时,不能保证系统节点池不会被放置在用户节点池上。
您是否检查了您的系统池是否具备所有系统吊舱所需的容量?
请参阅您提到的页面的“限制”部分。

https://stackoverflow.com/questions/74445188
复制相似问题