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