首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GKE自动驾驶仪-在特定节点上卡在init阶段的容器

GKE自动驾驶仪-在特定节点上卡在init阶段的容器
EN

Stack Overflow用户
提问于 2022-01-28 18:03:49
回答 1查看 317关注 0票数 1

我正在使用GKE的Autopilot集群运行一些kubernetes工作负载。豆荚被安排到一个分配的节点上,大约需要10分钟才能停留在init阶段。同一荚在不同的节点是在几秒钟内上升。

deployment.yaml

代码语言:javascript
复制
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描述节点问题-节点

代码语言:javascript
复制
    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

以上警告仅为消息。这个问题是由我这边的一些错误配置引起的吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-28 23:38:54

最好的建议是在Kubernetes集群中正确地管理容器计算资源。在创建Pod时,您可以选择指定每个容器需要多少CPU和内存(RAM)才能避免OOM情况。

当容器指定了资源请求时,调度程序就可以更好地决定将Pods放在哪个节点上。当容器有其指定的限制时,可以以指定的方式处理节点上的资源争用。CPU规范以核心单元为单位,内存以字节为单位指定。

每次调度程序失败时都会产生一个事件,请使用下面的命令查看事件的状态:

代码语言:javascript
复制
$ kubectl describe pod <pod-name>| grep Events

另外,请阅读关于“配置出资源处理”的Kubernetes官方指南。一定要确保:

为系统守护进程(如kubelet和OS内核)预留10-20%的内存容量,可以在90%-95%的内存利用率下清除这些豆荚,以减少系统OOM的冲击和发生率。

为了便利这种情况,库贝利特将推出以下选项:

代码语言:javascript
复制
--eviction-hard=memory.available<xMi
--system-reserved=memory=yGi

堆箱监控放置在适当的位置对可视化很有帮助。在库伯奈特和码头管理局上阅读更多的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70898279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档