2017-09-08 63 views
0

我正在使用azure的容器引擎运行kubernetes集群。我有一个kubernetes服务的问题,那是一个资源监视heapster。这个吊舱每分钟都会重新启动或类似的东西。我尝试删除heapster部署,replicaset和pod,然后重新创建部署。它立即返回相同的行为。Kubernetes监控服务heapster不断重启

当我看资源与heapster标签,它看起来有点有点怪:

$ kubectl get deploy,rs,po -l k8s-app=heapster --namespace=kube-system 
NAME    DESIRED CURRENT UP-TO-DATE AVAILABLE AGE 
deploy/heapster 1   1   1   1   17h 

NAME      DESIRED CURRENT READY  AGE 
rs/heapster-2708163903 1   1   1   17h 
rs/heapster-867061013 0   0   0   17h 

NAME       READY  STATUS RESTARTS AGE 
po/heapster-2708163903-vvs1d 2/2  Running 0   0s 

出于某种原因,在两个副本集。即使在我删除所有资源并重新部署它们时,名为rs/heapster-867061013的那个也会重新出现。上面还显示了该容器刚刚开始,这是它不断创建的问题,然后运行几秒钟,然后创建一个新容器。我是运行kubernetes的新手,所以我不确定哪些日志文件与此问题相关。

从heapster容器

heapster.go:72] /heapster source=kubernetes.summary_api:"" 
heapster.go:73] Heapster version v1.3.0 
configs.go:61] Using Kubernetes client with master "https://10.0.0.1:443" and version v1 
configs.go:62] Using kubelet port 10255 
heapster.go:196] Starting with Metric Sink 
heapster.go:106] Starting heapster on port 8082 

从heapster保姆容器日志日志

pod_nanny.go:56] Invoked by [/pod_nanny --cpu=80m --extra-cpu=0.5m --memory=140Mi --extra-memory=4Mi --threshold=5 --deployment=heapster --container=heapster --poll-period=300000 --estimator=exponential] 
pod_nanny.go:68] Watching namespace: kube-system, pod: heapster-2708163903-mqlsq, container: heapster. 
pod_nanny.go:69] cpu: 80m, extra_cpu: 0.5m, memory: 140Mi, extra_memory: 4Mi, storage: MISSING, extra_storage: 0Gi 
pod_nanny.go:110] Resources: [{Base:{i:{value:80 scale:-3} d:{Dec:<nil>} s:80m Format:DecimalSI} ExtraPerNode:{i:{value:5 scale:-4} d:{Dec:<nil>} s: Format:DecimalSI} Name:cpu} {Base:{i:{value:146800640 scale:0} d:{Dec:<nil>} s:140Mi Format:BinarySI} ExtraPerNode:{i:{value:4194304 scale:0} d:{Dec:<nil>} s:4Mi Format:BinarySI} Name:memory}] 
+0

heapster pod的日志说什么?它是否由于某种错误而退出?另外哪个[restartPolicy](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy)为该窗格设置? – fishi

+0

@fishi我已将日志添加到问题 –

+0

该吊舱已重新启动策略始终 –

回答

0

好的,所以它恰好是azure容器服务默认kubernetes配置中的一个问题。我得到了天蓝色支持者的帮助。

该问题已通过将标签addonmanager.kubernetes.io/mode: EnsureExists添加到heapster部署中解决。以下是支持者引用的请求:https://github.com/Azure/acs-engine/pull/1133

1

这是完全正常的,重要的是,部署控制器保持旧ReplicaSet资源,以做快速回滚。

部署资源管理ReplicaSet资源。您的heapster Deployment配置为运行1个pod,这意味着它将始终尝试创建一个具有1个pod的ReplicaSet。如果您对部署进行了更新(例如,新的heapster版本),则部署资源会创建一个新的副本集,以便为新版本安排一个窗格。与此同时,旧的ReplicaSet资源将其所需的窗格设置为0,但资源本身仍然保持易于回滚。如您所见,旧副本集rs/heapster-867061013有0个群集正在运行。如果您进行回滚,则部署deploy/heapster会将rs/heapster-867061013中的吊舱数量增加到1,并将rs/heapster-2708163903中的数量减少回0.您还应该检出关于部署控制器的documentation(如果您尚未完成此操作)。

尽管如此,您为什么新创建的Deployment Controller会立即创建2 ReplicaSets,这似乎很奇怪。在删除部署控制器之后并在创建新控制器之前,您是否等待几秒(例如20)?对我而言,删除在整个群集中传播有时需要一段时间,如果我重新创建速度过快,则会重用相同的资源。

关于您提到的heapster吊舱娱乐:吊舱有一个restartPolicy。如果设置为Never,则会在其退出时通过其副本集重新创建该容器(这意味着将创建新的容器资源并删除旧容器资源)。我的猜测是你的heapster pod有这个Never策略集。它可能由于某种错误而退出,并达到Failed状态(您需要检查日志)。然后在一段时间后副本集创建一个新的吊舱。