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报错。
Failed at step MEMORY spawning /opt/kubernetes/bin/kube-apiserver: Cannot allocate memory
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
看起来你的Kubernetes API服务器在启动时由于内存不足而失败。要解决这个问题,可以尝试以下几个步骤:
-
检查系统内存状态: 首先,你需要确认系统的内存使用情况。在Linux终端中运行以下命令:
free -h这将显示系统的总内存、已使用的内存以及剩余的内存信息。
-
调整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 -
调整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 -
重启kube-apiserver: 现在,尝试重启kube-apiserver服务:
sudo systemctl restart kube-apiserver
按照这些步骤操作后,应该可以解决kube-apiserver因内存不足而无法启动的问题。如果你仍然遇到问题,可能需要检查是否有其他服务占用了大量内存,或者考虑升级硬件以提供更多的内存资源。
解决 无用评论 打赏 举报 编辑记录-