Kubernetes部署更新使复制集崩溃并创建太多的POD

Kubernetes部署更新使复制集崩溃并创建太多的POD,kubernetes,google-cloud-platform,kubectl,Kubernetes,Google Cloud Platform,Kubectl,我使用Kubernetes在一个包含3个smalll实例的集群上向Google Cloud Containerengine部署了一个应用程序 在第一次部署时,使用以下工具一切顺利: kubectl create -f deployment.yaml 以及: 然后我在我的deployment.yaml中更改映像并进行如下更新: kubectl apply -f deployment.yaml 更新后,会发生以下几件事: Kubernetes正确地更新了它的POD,最后更新了3个实例。 在此之后

我使用Kubernetes在一个包含3个smalll实例的集群上向Google Cloud Containerengine部署了一个应用程序

在第一次部署时,使用以下工具一切顺利:

kubectl create -f deployment.yaml
以及:

然后我在我的deployment.yaml中更改映像并进行如下更新:

kubectl apply -f deployment.yaml
更新后,会发生以下几件事:

Kubernetes正确地更新了它的POD,最后更新了3个实例。 在此之后不久,将创建另一个复制集 此外,两倍数量的2*3=6吊舱突然出现,其中一半处于运行状态,另一半未知。 所以我检查了我的吊舱,发现了这个错误:

FailedSync      Error syncing pod, skipping: network is not ready: [Kubenet does not have netConfig. This is most likely due to lack of PodCIDR]
此外,我不能再使用kubectl代理使用仪表板。页面显示:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "no endpoints available for service \"kubernetes-dashboard\"",
  "reason": "ServiceUnavailable",
  "code": 503
}
所以我决定提前删除所有播客:

kubectl delete pod <pod-name> --grace-period=0 --force
我不知道这一切哪里出了问题。我的意思是,我所做的只是更新部署的映像


有人有想法吗?

如果您只是想更新图像,请尝试使用kubectl set image。这至少对我有用

通过谷歌搜索kubectl apply,很多已知问题似乎都出现了。看看这个例子


您没有发布您部署的kubernetes的版本,但是您是否可以尝试将集群升级到最新版本,以查看问题是否仍然存在。

我在kubernetes上遇到过类似的问题。根据你对我关于你的问题的答复,见上文:


我注意到,只有当我部署到谷歌云上的一个微实例时,才会发生这种情况,因为谷歌云没有足够的资源来处理部署。通过扩展CPU的初始资源,内存解决了我的问题

在我看来,这里发生的事情似乎是来自Linux内核的OOM杀手最终杀死了kubelet,这反过来使节点对集群无用,变得未知

防止整个节点退出服务的真正解决方案是添加。确保你不仅仅是在添加请求;添加限制,因为您希望终止您的服务(而不是K8s系统服务),以便在可能的情况下适当地重新安排它们


另外,在群集设置中,特别是在节点池中的“从中选择”,有一个框,您可以检查自动节点修复,该框至少可以部分解决此问题,而不会给您带来未定义的停机时间。

感谢您的回答!不幸的是,我已经尝试使用kubectl set image更新我的图像。但是,此更新中发生了相同的事件集。您是否能够解决此问题?您是否设置了部署的内存和CPU限制?我注意到,只有当我部署到Google Cloud上的一个微实例时,才会发生这种情况,因为Google Cloud没有足够的资源来处理部署。通过扩展CPU的初始资源,内存解决了我的问题。谢谢你的回答。我同意这是一个很好的建议,增加限制,以便服务被终止,而不是变成未知状态。
kubectl delete pod <pod-name> --grace-period=0 --force
no nodes available to schedule pods