【问题标题】:Kubelet SyncLoop stops (v1.1.1)Kubelet SyncLoop 停止 (v1.1.1)
【发布时间】:2015-12-10 18:01:47
【问题描述】:

我正在尝试将复制控制器的大小从 2 调整为 0,要删除的两个 pod 分别安排在 node1 和 node2 上。 node2 上的 pod 被删除没有问题,但 node1 上的 pod 根据kubectl get podsdocker ps 保持活动并运行

症状:

kubectl scale rc my-app-v1 --replicas=0
kubectl get rc my-app-v1
# waited several minutes
kubectl get pods -l app=my-app

输出:

CONTROLLER   CONTAINER(S)   IMAGE(S)           SELECTOR     REPLICAS
my-app-v1    my-app         <docker image>     <selector>   0

NAME                 READY     STATUS    RESTARTS   AGE  NODE
my-app-v1-a12da      1/1       Running   0          5d   node1

两个 pod 中的一个已正确删除,而另一个仍在运行。我已经尝试了几次,并且一直只有 node1 有问题。

我试图解决的问题:

我 ssh 进入 node1 并重新启动了 kubelet。这删除了徘徊的 pod,但是当我尝试删除该节点上的另一个 pod 时,我仍然必须重新启动 kubelet 才能使其工作。

我认为 kubelet 循环在某个地方卡住了,并且在卡住之前只能通过几次迭代。

我刚刚打开了详细日志记录,但我不确定我应该寻找什么。

更新

这也适用于调度到 node1 的容器。他们的图像永远不会被拉出,也不会被启动。

node1 过去工作过,我昨晚刚开始遇到这个问题

Kubelet 版本

admin@node1 ~ $ /opt/bin/kubelet --version=true
Kubernetes v1.1.1

Kubectl 版本

kubectl version
Client Version: version.Info{Major:"1", Minor:"0", GitVersion:"v1.0.6", GitCommit:"388061f00f0d9e4d641f9ed4971c775e1654579d", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.1", GitCommit:"92635e23dfafb2ddc828c8ac6c03c7a7205a84d8", GitTreeState:"clean"}

日志摘录:SyncLoop 在哪里?

8154 config.go:382] Receiving a new pod "my-app-v1-a12da_default"
...
8154 server.go:944] GET /stats/default/my-app-v1-a12da/<some uuid>/app-container: (75.513µs) 404 [[Go 1.1 package http]

通常,SyncLoop 会选择它并执行必要的 docker 操作来启动容器。但是在“接收新 pod”之后没有同步循环活动,自从我重新启动 kubelet 以来,过去 50 分钟内没有同步循环活动。

【问题讨论】:

  • 在删除 pod 期间,是否会在受影响的节点上发布 kubelet 的日志?这将使诊断更容易。
  • @PaulMorie 当然,我在健康节点和问题节点上都将详细程度提高到 10,有什么特别的东西我可以用 grep 来查找应该发生删除请求的位置吗?
  • 你能通过运行kubectl version来检查你的master的版本吗?对于 v1.0.+ 版本,kubelet负责从 apisever 中删除 pod 对象。由于您仍然可以看到 kubectl get pods 中的 pod,因此您的集群中可能存在其他问题。
  • 谢谢,我已经更新了kubectl版本,v1.0+中哪个服务负责删除和创建pod?
  • 您的服务器版本是 v1.1,它假定 kubelet 会删除 pod。为了处理版本偏差,如果节点报告 kubelet 版本为 ,则合并了 [fix] (github.com/mikedanese/kubernetes/commit/…) 以指示节点控制器删除该节点的 pod

标签: kubernetes


【解决方案1】:

正如@yu-ju-hong 所指出的,这是由于 Kubernetes 1.1.1 中处理版本倾斜集群的一个错误。请将 master 升级到更新的版本,例如 Kubernetes 1.1.7,并且最好尽快将节点升级到相同的版本。

【讨论】:

    猜你喜欢
    • 2020-08-28
    • 2020-04-04
    • 2019-07-24
    • 1970-01-01
    • 2021-07-09
    • 2019-02-24
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多