返回
Nacos 架设于 Kubernetes,攻克 "No preemption victims found for incoming pod" 难题
后端
2024-02-19 13:25:06
Nacos 简介
Nacos 是一个致力于服务发现、服务配置和服务管理的开源平台。它提供了丰富的功能,例如服务注册、服务发现、配置管理、服务健康检查等,帮助您轻松构建可扩展、可靠的微服务架构。
Kubernetes 简介
Kubernetes 是一个开源的容器编排系统,用于自动部署、扩展和管理容器化应用程序。它提供了一个平台,让您轻松地管理容器化应用程序的生命周期,并确保它们始终处于运行状态。
问题
在 Kubernetes 集群中架设 Nacos 时,您可能会遇到以下错误:
No preemption victims found for incoming pod
此错误表明在集群中没有可驱逐的 Pod,以腾出资源来运行新的 Pod。这通常是由于 Pod 预留配置不当造成的。
解决方案
要解决此问题,您需要修改 deploy/nfs/class.yaml
文件中的存储类配置。具体步骤如下:
- 找到
deploy/nfs/class.yaml
文件。 - 在文件中找到以下内容:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-client
provisioner: kubernetes.io/nfs
parameters:
path: /nfs/pvc
server: nfs-server.example.com
- 将
path
参数值更改为您的 NFS 共享路径。 - 将
server
参数值更改为您的 NFS 服务器地址。 - 保存文件并重新运行 Nacos。
其他注意事项
除了修改存储类配置之外,您还需要确保 Pod 预留配置正确。您可以通过以下命令查看 Pod 预留配置:
kubectl describe pod [pod-name]
在输出结果中,找到 NominatedNodeName
字段。如果此字段为空,则表明 Pod 没有预留到任何节点。您可以使用以下命令为 Pod 预留节点:
kubectl annotate pod [pod-name] scheduler.alpha.kubernetes.io/affinity-pod-anti-affinity-weight=10
此命令将为 Pod 预留到与其他 Pod 相同节点的可能性增加 10 倍。
总结
通过修改存储类配置和 Pod 预留配置,您可以解决 "No preemption victims found for incoming pod" 错误,并成功在 Kubernetes 集群中搭建 Nacos。