【发布时间】:2020-11-06 20:41:46
【问题描述】:
我使用 AKS 来创建我们的集群,其中包含 3 个工作节点,它们的名称分别是 node-0、node-1、节点 2。它们由 Azure VMSS 创建。
当我通过 Helm 部署 pod-new 时,调度程序总是将 pod-new 调度到 node-0 或 node -2 即使那些工作量大的节点。
假设 node-0 或 node-2 上有一个 pod-old,这将导致 pod-old 被驱逐,但仍未重新安排到 node-1。我需要明确使用 nodeSelector 将其移动到 node-1。
下面是我的 deployment.yaml。为了获得更好的资源使用率,我没有指定request 和limit,因为我的 pod 需要更高的 cpu-burst 来进行初始化。初始化后,它只需要一点资源来服务请求。
apiVersion: apps/v1
kind: Deployment
metadata:
name: aks-service
labels:
helm.sh/chart: service-0.1.0
app.kubernetes.io/name: service
app.kubernetes.io/instance: aks
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
minReadySeconds: 10
selector:
matchLabels:
app.kubernetes.io/name: service
app.kubernetes.io/instance: aks
template:
metadata:
labels:
app.kubernetes.io/name: service
app.kubernetes.io/instance: aks
spec:
imagePullSecrets:
- name: custom
serviceAccountName: account-with-azure-cr
securityContext:
fsGroup: 2000
runAsGroup: 3000
runAsUser: 1000
containers:
- name: frontend
image: imageurl
imagePullPolicy: IfNotPresent
ports:
- name: port-frontend
containerPort: 3000
protocol: TCP
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
- name: varlogpod
hostPath:
path: /var/log/pods
【问题讨论】:
-
是的,我对 AKS 也有同样的经历,这是唯一的出路。该文档仅列出了用于调度的多种算法,本质上它将选择哪一种是需要研究的。我还手动将 Pod 从一个节点重新调度到另一个节点,而不使用节点关联
-
您的节点是否具有相同的标签并且在一个可用区中?
-
@Rico 标签上有两个不同的值,一个是可用区,另一个是主机名。 node-0、node-1、node-2依次在zone-0、zone-1、zone-2中。
-
所有节点共享
kubectl describe node nodename的输出
标签: kubernetes google-kubernetes-engine amazon-eks azure-aks