2017-09-08 101 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狀態(您需要檢查日誌)。然後在一段時間後副本集創建一個新的吊艙。