wyy950924 2024-05-06 11:51 采纳率: 0%
浏览 26

Failed at step MEMORY spawning /opt/kubernetes/bin/kube-apiserver: Cannot allocate memory

May 6 11:43:05 master systemd: Started Kubernetes API Server.
May 6 11:43:05 master systemd: Failed at step MEMORY spawning /opt/kubernetes/bin/kube-apiserver: Cannot allocate memory
May 6 11:43:05 master systemd: kube-apiserver.service: main process exited, code=exited, status=204/MEMORY
May 6 11:43:05 master systemd: Unit kube-apiserver.service entered failed state.
May 6 11:43:05 master systemd: kube-apiserver.service failed.
May 6 11:43:05 master systemd: kube-apiserver.service holdoff time over, scheduling restart.
May 6 11:43:05 master systemd: Stopped Kubernetes API Server.
第一次配置并启动k8s的kube-apiserver报错。

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-06 11:51
    关注

    引自免费微信小程序:皆我百晓生

    看起来你的Kubernetes API服务器在启动时由于内存不足而失败。要解决这个问题,可以尝试以下几个步骤:

    1. 检查系统内存状态: 首先,你需要确认系统的内存使用情况。在Linux终端中运行以下命令:

      free -h
      

      这将显示系统的总内存、已使用的内存以及剩余的内存信息。

    2. 调整Kubelet 的内存限制: Kubelet是负责管理Pods的守护进程,它可能会设置对API服务器的资源请求和限制。可以通过修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件中的内存限制来调整。找到类似下面的部分:

      [Service]
      LimitMemory=infinity
      

      LimitMemory=infinity 改为一个具体的值,例如 LimitMemory=8G(根据你的实际情况分配,这里假设有8GB可用内存)。然后重启kubelet服务:

      sudo systemctl daemon-reload
      sudo systemctl restart kubelet
      
    3. 调整API服务器的资源请求和限制: 在Kubernetes集群中,你可以通过编辑kube-apiserver的Pod定义来更改其资源限制。默认情况下,这个定义通常位于 /etc/kubernetes/manifests/kube-apiserver.yaml。打开文件,找到类似下面的部分:

      resources:
        limits:
          cpu: "1"
          memory: "1Gi"
        requests:
          cpu: "250m"
          memory: "200Mi"
      

      可能需要增加内存限制和请求。例如,如果你有8GB的内存可用,可以尝试:

      resources:
        limits:
          cpu: "1"
          memory: "7Gi" # 减少一些,留出一些给其他服务
        requests:
          cpu: "250m"
          memory: "500Mi" # 增加一点,确保API服务器有足够的内存运行
      

      保存文件后,重新应用配置:

      kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
      
    4. 重启kube-apiserver: 现在,尝试重启kube-apiserver服务:

      sudo systemctl restart kube-apiserver
      

    按照这些步骤操作后,应该可以解决kube-apiserver因内存不足而无法启动的问题。如果你仍然遇到问题,可能需要检查是否有其他服务占用了大量内存,或者考虑升级硬件以提供更多的内存资源。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月6日