我正在尝试将我的微服务部署到 Kubernetes 集群中。我的集群有一个主节点和一个工作节点。我为 Kubernetes 部署的研发创建了这个集群。当我尝试部署时,我收到了如下所示的偶数错误消息,
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling <unknown> default-scheduler 0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate
Run Code Online (Sandbox Code Playgroud)
我的尝试
当我在探索错误时,我在论坛中发现了一些关于在节点中重新启动 docker 等的评论。所以之后我重新启动了 Docker。但错误仍然相同。
当我尝试该命令时,kubectl get nodes它显示两个节点都是主节点并且都是ready状态。
NAME STATUS ROLES AGE VERSION
mildevkub020 Ready master 6d19h v1.17.0
mildevkub040 Ready master 6d19h v1.17.0
Run Code Online (Sandbox Code Playgroud)
我在这里没有找到工作节点。我用一个负载均衡器创建了一个主节点 (mildevkub020) 和一个工作节点 (mildev040)。我从以下链接中遵循了 Kubernetes 的官方文档,
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/
我的问题
这个错误是因为集群问题吗?因为我没有找到集群工作节点。只有主节点。
Arg*_*dhu 32
您可以运行以下命令从主节点中删除污点,然后您应该能够在该节点上部署您的 pod
kubectl taint nodes mildevkub020 node-role.kubernetes.io/master-
kubectl taint nodes mildevkub040 node-role.kubernetes.io/master-
Run Code Online (Sandbox Code Playgroud)
现在关于为什么它显示为主节点检查您运行的命令以使用 kubeadm 加入节点。主节点和工作节点加入有单独的命令。
当您的 docker 环境没有分配足够的资源时,您也可以收到这种“污点”类型的消息。
比如Docker Desktop for Mac,在preferences中分配更多的memory/cpu/swap,或许可以解决你的问题。
如果 kubernetes Auto Scaling 没有足够的节点来启动新的 pod,也会发生这种情况,您可能会在描述中看到“CPU 不足”。
小智 7
删除 master 上的污点,以便您可以在其上调度 pod。
kubectl taint nodes --all node-role.kubernetes.io/master-
Run Code Online (Sandbox Code Playgroud)
它应该返回以下内容。
node/<your-hostname> untainted
Run Code Online (Sandbox Code Playgroud)
小智 5
在 k8s 版本 1.24.2 中,您必须运行以下命令:
kubectl taint nodes <node_name> dedicated=special-user:NoSchedule
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41553 次 |
| 最近记录: |