我正在使用GKE的Autopilot集群运行一些kubernetes工作负载。豆荚被安排到一个分配的节点上,大约需要10分钟才能停留在init阶段。同一荚在不同的节点是在几秒钟内上升。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jobs
spec:
replicas: 1
selector:
matchLabels:
app: job
template:
metadata:
labels:
app: job
spec:
volumes:
- name: shared-data
emptyDir: {}
initContainers:
- name: init-volume
image: gcr.io/dummy_image:latest
imagePullPolicy: Always
resources:
limits:
memory: "1024Mi"
cpu: "1000m"
ephemeral-storage: "10Gi"
volumeMounts:
- name: shared-data
mountPath: /data
command: ["/bin/sh","-c"]
args:
- cp -a /path /data;
containers:
- name: job-server
resources:
requests:
ephemeral-storage: "5Gi"
limits:
memory: "1024Mi"
cpu: "1000m"
ephemeral-storage: "10Gi"
image: gcr.io/jobprocessor:latest
imagePullPolicy: Always
volumeMounts:
- name: shared-data
mountPath: /ebdata1只有当容器有init容器时,才会发生这种情况。在我的例子中,我将一些数据从虚拟容器复制到共享卷,而我正在实际的容器上挂载这些数据。但是,每当豆荚被安排到这个特定的节点上时,它就会停留在init阶段大约10分钟,并自动得到解决。我在事件日志中看不到任何错误。
kubectl描述节点问题-节点
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning SystemOOM 52m kubelet System OOM encountered, victim process: cp, pid: 477887
Warning OOMKilling 52m kernel-monitor Memory cgroup out of memory: Killed process 477887 (cp) total-vm:2140kB, anon-rss:564kB, file-rss:768kB, shmem-rss:0kB, UID:0 pgtables:44kB oom_score_adj:-997以上警告仅为消息。这个问题是由我这边的一些错误配置引起的吗?
发布于 2022-01-28 23:38:54
最好的建议是在Kubernetes集群中正确地管理容器计算资源。在创建Pod时,您可以选择指定每个容器需要多少CPU和内存(RAM)才能避免OOM情况。
当容器指定了资源请求时,调度程序就可以更好地决定将Pods放在哪个节点上。当容器有其指定的限制时,可以以指定的方式处理节点上的资源争用。CPU规范以核心单元为单位,内存以字节为单位指定。
每次调度程序失败时都会产生一个事件,请使用下面的命令查看事件的状态:
$ kubectl describe pod <pod-name>| grep Events另外,请阅读关于“配置出资源处理”的Kubernetes官方指南。一定要确保:
为系统守护进程(如kubelet和OS内核)预留10-20%的内存容量,可以在90%-95%的内存利用率下清除这些豆荚,以减少系统OOM的冲击和发生率。
为了便利这种情况,库贝利特将推出以下选项:
--eviction-hard=memory.available<xMi
--system-reserved=memory=yGi将堆箱监控放置在适当的位置对可视化很有帮助。在库伯奈特和码头管理局上阅读更多的内容。
https://stackoverflow.com/questions/70898279
复制相似问题