为什么这个Kubernetes吊舱没有触发我们的自动缩放?

为什么这个Kubernetes吊舱没有触发我们的自动缩放?,kubernetes,airflow,Kubernetes,Airflow,我们正在运行一个Kubernetes集群,它有一个自动缩放器,据我所知,它在大多数情况下都能正常工作。当我们更改一个给定部署的副本数,该副本数将超过集群的资源时,autoscaler将捕获该副本并进行扩展。同样,如果我们需要更少的资源,我们也会缩小规模 直到今天,我们气流部署的一些吊舱因为无法获得所需资源而停止工作。POD不会触发集群扩展,而是会立即失败或因试图请求或使用比可用资源更多的资源而被逐出。请参阅下面其中一个失败POD的YAML输出。POD也不会显示为挂起状态:它们会立即从启动状态跳到

我们正在运行一个Kubernetes集群,它有一个自动缩放器,据我所知,它在大多数情况下都能正常工作。当我们更改一个给定部署的副本数,该副本数将超过集群的资源时,autoscaler将捕获该副本并进行扩展。同样,如果我们需要更少的资源,我们也会缩小规模

直到今天,我们气流部署的一些吊舱因为无法获得所需资源而停止工作。POD不会触发集群扩展,而是会立即失败或因试图请求或使用比可用资源更多的资源而被逐出。请参阅下面其中一个失败POD的YAML输出。POD也不会显示为挂起状态:它们会立即从启动状态跳到失败状态

在重试容忍度方面,我是否遗漏了一些东西,这些东西会触发pod挂起,从而等待放大

apiVersion: v1
kind: Pod
metadata:
  annotations:
    kubernetes.io/psp: eks.privileged
  creationTimestamp: "2019-12-02T22:41:19Z"
  name: ingest-customer-ff06ae4d
  namespace: airflow
  resourceVersion: "32545690"
  selfLink: /api/v1/namespaces/airflow/pods/ingest-customer-ff06ae4d
  uid: dba8b4c1-1554-11ea-ac6b-12ff56d05229
spec:
  affinity: {}
  containers:
  - args:
    - scripts/fetch_and_run.sh
    env:
    - name: COMPANY
      value: acme
    - name: ENVIRONMENT
      value: production
    - name: ELASTIC_BUCKET
      value: customer
    - name: ELASTICSEARCH_HOST
      value: <redacted>
    - name: PATH_TO_EXEC
      value: tools/storage/store_elastic.py
    - name: PYTHONWARNINGS
      value: ignore:Unverified HTTPS request
    - name: PATH_TO_REQUIREMENTS
      value: tools/requirements.txt
    - name: GIT_REPO_URL
      value: <redacted>
    - name: GIT_COMMIT
      value: <redacted>
    - name: SPARK
      value: "true"
    image: dkr.ecr.us-east-1.amazonaws.com/spark-runner:dev
    imagePullPolicy: IfNotPresent
    name: base
    resources:
      limits:
        memory: 28Gi
      requests:
        memory: 28Gi
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /mnt/ssd
      name: tmp-disk
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-cgpcc
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  hostNetwork: true
  priority: 0
  restartPolicy: Never
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - emptyDir: {}
    name: tmp-disk
  - name: default-token-cgpcc
    secret:
      defaultMode: 420
      secretName: default-token-cgpcc
status:
  conditions:
  - lastProbeTime: "2019-12-02T22:41:19Z"
    lastTransitionTime: "2019-12-02T22:41:19Z"
    message: '0/9 nodes are available: 9 Insufficient memory.'
    reason: Unschedulable
    status: "False"
    type: PodScheduled
  phase: Pending
  qosClass: Burstable
apiVersion:v1 种类:豆荚 元数据: 注释: kubernetes.io/psp:eks.privileged creationTimestamp:“2019-12-02T22:41:19Z” 名称:ingest-customer-ff06ae4d 名称空间:气流 资源版本:“32545690” selfLink:/api/v1/namespace/afflow/pods/insect-customer-ff06ae4d uid:dba8b4c1-1554-11ea-ac6b-12ff56d05229 规格: 关联:{} 容器: -args: -脚本/fetch_和_run.sh 环境: -名称:公司 价值:极致 -名称:环境 价值:生产 -名称:橡皮桶 价值:客户 -名称:ELASTICSEARCH_主机 价值: -名称:路径\到\执行 值:工具/存储/存储_.py -名称:蟒蛇警告 值:忽略:未验证的HTTPS请求 -名称:路径到需求 值:tools/requirements.txt -名称:GIT_REPO_URL 价值: -姓名:GIT_COMMIT 价值: -姓名:SPARK 价值:“真实” 图片:dkr.ecr.us-east-1.amazonaws.com/spark runner:dev imagePullPolicy:如果不存在 名称:基地 资源: 限制: 内存:28Gi 请求: 内存:28Gi terminationMessagePath:/dev/终止日志 terminationMessagePolicy:文件 体积数量: -装载路径:/mnt/ssd 名称:tmp磁盘 -挂载路径:/var/run/secrets/kubernetes.io/serviceCount 名称:默认令牌cgpcc 只读:正确 DNS政策:集群优先 enableServiceLinks:true 主机网络:对 优先级:0 餐馆政策:永不 schedulerName:默认计划程序 securityContext:{} serviceAccount:默认值 serviceAccountName:默认值 终止时间:30秒 容忍: -效果:无效 键:node.kubernetes.io/not-ready 操作员:存在 容忍秒:300 -效果:无效 键:node.kubernetes.io/unreachable 操作员:存在 容忍秒:300 卷数: -emptyDir:{} 名称:tmp磁盘 -名称:默认令牌cgpcc 秘密: 默认模式:420 secretName:默认令牌cgpcc 地位: 条件: -最后时刻:“2019-12-02T22:41:19Z” 最后转换时间:“2019-12-02T22:41:19Z” 消息:“0/9节点可用:9内存不足。” 原因:计划外 状态:“假” 类型:吊舱 阶段:待定 质量等级:伯斯塔布尔
您的节点有多大?你在使用什么云提供商?我们在EKS(亚马逊的交钥匙Kubernetes)上,我们的节点是4CPU/30GB。我认为我们增加28GB内存需求的原因是试图强迫它占用整个节点。并非所有实例内存都可以由用户pod分配。可能是28GB太大,无法容纳在一个节点中。此外,它在yaml
阶段中表示:挂起
。。。尝试降低内存需求,确保节点没有受到污染,从而阻止您的POD在那里运行。我没有注意到输出中的挂起状态。这让我觉得这是某种超时或重试容忍。我们还有其他需要28GB内存的部署,它们都可以运行并正确触发放大,所以我认为这不是问题所在。这个pod也应该以2Gb的速度运行-我们在本测试中对其进行了调试-由于其他资源限制,它也会以2Gb的速度失败,这会触发一个扩展。您可以发送一个2Gb内存需求失败的pod输出吗?另一件事是,如果你想让这个pod占据整个节点,你应该使用它。