国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s服務(wù)突然中斷重啟原因排查-eviction manager: must evict pod(s) to reclaim memory

這篇具有很好參考價(jià)值的文章主要介紹了k8s服務(wù)突然中斷重啟原因排查-eviction manager: must evict pod(s) to reclaim memory。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.故障背景

20230512早上9點(diǎn)半左右,服務(wù)突然中斷造成產(chǎn)品不可用。

2.設(shè)想重啟原因:

1.時(shí)間端內(nèi)有占用大內(nèi)存操作,定時(shí)任務(wù),造成內(nèi)存溢出或者探針失敗重啟
2.時(shí)間段內(nèi)業(yè)務(wù)高峰,內(nèi)存溢出或探針失敗重啟
3.kafka大量失敗造成應(yīng)用重啟。那么kafka失敗原因排查

3.排查過程

3.1排查應(yīng)用不可用探針失敗造成重啟

首先查看 pod狀態(tài):
k8s重啟service,排錯(cuò)日志,kubernetes,容器,云原生
所有pod都有一次重啟記錄。
檢查pod狀態(tài):因?yàn)閜od已經(jīng)重啟了。查看現(xiàn)在pod詳情還是可以看到探針超時(shí)。

檢查探針設(shè)置:
k8s重啟service,排錯(cuò)日志,kubernetes,容器,云原生
Pod Events中超時(shí)的是 readiness探針。解釋下探針:
readiness probes:就緒性探針,用于檢測(cè)應(yīng)用實(shí)例當(dāng)前是否可以接收請(qǐng)求,如果不能,k8s不會(huì)轉(zhuǎn)發(fā)流量。

探針說(shuō)明,探測(cè)類型
livenessProbe:kubelet 使用存活探測(cè)器來(lái)確定什么時(shí)候要重啟容器。 例如,存活探測(cè)器可以探測(cè)到應(yīng)用死鎖(應(yīng)用程序在運(yùn)行,但是無(wú)法繼續(xù)執(zhí)行后面的步驟)情況。 重啟這種狀態(tài)下的容器有助于提高應(yīng)用的可用性,即使其中存在缺陷。
readinessProbe:kubelet 使用就緒探測(cè)器可以知道容器何時(shí)準(zhǔn)備好接受請(qǐng)求流量,當(dāng)一個(gè) Pod 內(nèi)的所有容器都就緒時(shí),才能認(rèn)為該 Pod 就緒。 這種信號(hào)的一個(gè)用途就是控制哪個(gè) Pod 作為 Service 的后端。 若 Pod 尚未就緒,會(huì)被從 Service 的負(fù)載均衡器中剔除。
startupProbe:kubelet 使用啟動(dòng)探測(cè)器來(lái)了解應(yīng)用容器何時(shí)啟動(dòng)。 如果配置了這類探測(cè)器,你就可以控制容器在啟動(dòng)成功后再進(jìn)行存活性和就緒態(tài)檢查, 確保這些存活、就緒探測(cè)器不會(huì)影響應(yīng)用的啟動(dòng)。 啟動(dòng)探測(cè)器可以用于對(duì)慢啟動(dòng)容器進(jìn)行存活性檢測(cè),避免它們?cè)趩?dòng)運(yùn)行之前就被殺掉

也就是說(shuō)只要readiness 失敗只會(huì)標(biāo)記未就緒,從service的負(fù)載均衡中移除,并不會(huì)重啟pod。
那么readiness探針失敗造成重啟就排除了。

3.2 排查kafka報(bào)錯(cuò)造成服務(wù)重啟:

容器重啟當(dāng)前容器的日志不是故障發(fā)生的日志,需要查看歷史容器的日志。
我知道的有兩種方式可以查看歷史容器日志:

  1. kubectl logs podName --previous
  2. 找到目錄/var/log/pod/容器id/容器名查看歷史容器日志:k8s重啟service,排錯(cuò)日志,kubernetes,容器,云原生
    懷疑kafka的最直接原因原容器的日志中:
2023-05-12 09:29:16.211  INFO 1 --- [ool-67-thread-1] i.m.c.i.binder.kafka.KafkaMetrics        : Failed to bind meter: kafka.consumer.fetch.manager.fetch.size.avg [tag(client-id=consumer-hcp-fdbusiness-svc-12), tag(topic=med-pay-trade), tag(kafka-version=2.5.1), tag(spring.id=med-pay-trade.consumer.consumer-hcp-fdbusiness-svc-12)]. However, this could happen and might be restored in the next refresh.
2023-05-12 09:29:16.211  INFO 1 --- [ool-67-thread-1] i.m.c.i.binder.kafka.KafkaMetrics        : Failed to bind meter: kafka.consumer.fetch.manager.records.consumed.rate [tag(client-id=consumer-hcp-fdbusiness-svc-12), tag(topic=med-pay-trade), tag(kafka-version=2.5.1), tag(spring.id=med-pay-trade.consumer.consumer-hcp-fdbusiness-svc-12)]. However, this could happen and might be restored in the next refresh.
2023-05-12 09:29:16.213  INFO 1 --- [ool-67-thread-1] i.m.c.i.binder.kafka.KafkaMetrics        : Failed to bind meter: kafka.consumer.fetch.manager.bytes.consumed.rate [tag(client-id=consumer-hcp-fdbusiness-svc-12), tag(topic=med-pay-trade), tag(kafka-version=2.5.1), tag(spring.id=med-pay-trade.consumer.consumer-hcp-fdbusiness-svc-12)]. However, this could happen and might be restored in the next refresh.
2023-05-12 09:29:16.214  INFO 1 --- [ool-67-thread-1] i.m.c.i.binder.kafka.KafkaMetrics        : Failed to bind meter: kafka.consumer.fetch.manager.records.per.request.avg [tag(client-id=consumer-hcp-fdbusiness-svc-12), tag(topic=med-pay-trade), tag(kafka-version=2.5.1), tag(spring.id=med-pay-trade.consumer.consumer-hcp-fdbusiness-svc-12)]. However, this could happen and might be restored in the next refresh.
2023-05-12 09:29:16.218  INFO 1 --- [ool-67-thread-1] i.m.c.i.binder.kafka.KafkaMetrics        : Failed to bind meter: kafka.consumer.fetch.manager.fetch.size.max [tag(client-id=consumer-hcp-fdbusiness-svc-12), tag(topic=med-pay-trade), tag(kafka-version=2.5.1), tag(spring.id=med-pay-trade.consumer.consumer-hcp-fdbusiness-svc-12)]. However, this could happen and might be restored in the next refresh.
2023-05-12 09:29:16.220  INFO 1 --- [ool-67-thread-1] i.m.c.i.binder.kafka.KafkaMetrics        : Failed to bind meter: kafka.consumer.fetch.manager.records.consumed.total [tag(client-id=consumer-hcp-fdbusiness-svc-12), tag(topic=med-pay-trade), tag(kafka-version=2.5.1), tag(spring.id=med-pay-trade.consumer.consumer-hcp-fdbusiness-svc-12)]. However, this could happen and might be restored in the next refresh.
2023-05-12 09:29:16.370 ERROR 1 --- [io-8080-exec-22] c.z.h.f.e.DefaultExceptionHandler        : System exception found: 

reactor.core.Exceptions$ReactiveException: java.lang.InterruptedException
java.lang.NullPointerException: null
	at org.springframework.web.util.UrlPathHelper.removeJsessionid(UrlPathHelper.java:542) 
2023-05-12 09:29:17.216  INFO 1 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService
2023-05-12 09:29:17.244  INFO 1 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2023-05-12 09:29:17.247  INFO 1 --- [extShutdownHook] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
2023-05-12 09:29:17.248  INFO 1 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2023-05-12 09:29:17.256  INFO 1 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2023-05-12 09:29:17.260  INFO 1 --- [extShutdownHook] com.netflix.discovery.DiscoveryClient    : Shutting down DiscoveryClient ...
2023-05-12 09:29:20.261  WARN 1 --- [scoveryClient-1] c.netflix.discovery.TimedSupervisorTask  : task supervisor shutting down, can't accept the task
2023-05-12 09:29:20.261  INFO 1 --- [extShutdownHook] com.netflix.discovery.DiscoveryClient    : Unregistering ...
2023-05-12 09:29:20.267  INFO 1 --- [extShutdownHook] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_HCP-FDBUSINESS-SVC/hcp-fdbusiness-svc-5457d99c89-94ff4:hcp-fdbusiness-svc - deregister  status: 200
2023-05-12 09:29:20.275  INFO 1 --- [extShutdownHook] com.netflix.discovery.DiscoveryClient    : Completed shut down of DiscoveryClient

Kafka執(zhí)行rebalence 后就馬上報(bào)錯(cuò),然后就是各種shutdown了。日志再往前翻,也有rebalence,并不會(huì)直接造成服務(wù)被干掉。 而且rebalence并不是很頻繁。Rebalence是kafka非常常見的動(dòng)作,只會(huì)短暫無(wú)法消費(fèi)消息,很快就會(huì)恢復(fù)正常。

到這里就排除了kafka的原因

3.3故障時(shí)間段內(nèi)業(yè)務(wù)高峰。

從主要業(yè)務(wù)數(shù)據(jù)檢查是否異常:
核心的簽約業(yè)務(wù),并沒有異常數(shù)據(jù)量情況。同時(shí)檢查定時(shí)任務(wù)也沒有發(fā)現(xiàn)異常數(shù)據(jù)量操作。
所以排除故障時(shí)間段內(nèi)業(yè)務(wù)高峰

4.系統(tǒng)原因排查

切換到pod所在物理主機(jī)查看linux操作系統(tǒng)日志:/var/log/messages
May 12 09:28:39 kn-56 kubelet: W0512 09:28:39.680915 21612 eviction_manager.go:330] eviction manager: attempting to reclaim memory
May 12 09:28:39 kn-56 kubelet: I0512 09:28:39.682970 21612 eviction_manager.go:341] eviction manager: must evict pod(s) to reclaim memory
May 12 09:28:39 kn-56 kubelet: I0512 09:28:39.684012 21612 eviction_manager.go:359] eviction manager: pods ranked for eviction: redis-3_med-rhin(d756304c-c34f-4aec-856e-589f94bcccb8), nuclein-svc-40_med-rhin(b23e48a9-1533-4105-9b2b-a7301943ce8d), hcp-fdbusiness-svc-5457d99c89-94ff4_med-rhin(6505583b-894e-4d31-a31a-67d6b9c57e81), nuclein-trip-svc-41_med-rhin(5b9d8572-d645-44ff-b794-8b6e4c07a003), nuclein-trip-svc-57_med-rhin(5332fd71-c56a-4198-886e-f029410c77d8), nuclein-weixin-6cb545fd44-xpbtf_med-rhin(f545f1cf-94fc-445a-81a0-313193a95246), rhin-eureka-1_med-rhin(bdec2717-0868-4ab6-a49b-db18a8d0a8f1), nginx-ingress-controller-dfkw5_ingress-nginx(b6eade3b-cc4e-44d8-91b1-01fefad4d8d7), hcp-wechat-portal-6d4879db4b-t2mp7_med-rhin(c603056d-91b3-4070-a868-24aefb1b1963), nuclein-manage-tender-5c6fc5d796-26nrv_med-rhin(f7876802-efb0-4370-a466-859906c1c4f3), calico-node-djgrl_kube-system(4a0c6908-f716-4cc7-92e6-2c3f41d9a253), kube-proxy-m8xq5_kube-system(96a786d7-aaa2-40ca-907e-bb392c457ea9), node-exporter-767hm_monitoring(c315e60c-2323-4775-a28b-e7ba11dc091f), filebeat-filebeat-vd8ld_med-rhin(a5cefe0a-38fb-48ff-8555-e00cb6cb0e38)
May 12 09:28:39 kn-56 dockerd: time=“2023-05-12T09:28:39.829704332+08:00” level=info msg=“Container ad6332e6c7e6fe491fc2f79d576dea8d1dd48985553c595414e1686abd3faa8d failed to exit within 0 seconds of signal 15 - using the force”

驅(qū)逐pod以回收內(nèi)存。

在阿里云微博中找到了k8s驅(qū)逐pod原因:
Kubernetes用于處理低RAM和磁盤空間情況的驅(qū)逐策略:https://www.alibabacloud.com/blog/kubernetes-eviction-policies-for-handling-low-ram-and-disk-space-situations—part-1_595202

定義了低RAM和低磁盤空間的閾值,當(dāng)達(dá)到這些閾值時(shí),Kubernetes驅(qū)逐策略就會(huì)起作用。Kubernetes將Pods從節(jié)點(diǎn)中逐出,以解決低RAM和低磁盤空間的問題。

文章介紹有兩種情況會(huì)導(dǎo)致pod驅(qū)逐:

  1. RAM和磁盤空間超過一定閾值就會(huì)開始驅(qū)逐pod
    檢查節(jié)點(diǎn)的磁盤使用量:
    k8s重啟service,排錯(cuò)日志,kubernetes,容器,云原生
    Data目錄下的空間還有很多。 pod運(yùn)行時(shí)的日志文件都是寫入這個(gè)目錄下的。磁盤的使用量一般只會(huì)不斷累積,越來(lái)越大。
    所以排除磁盤使用量不足問題所以磁盤超過閾值的情況

  2. 檢查內(nèi)存使用量情況:
    k8s重啟service,排錯(cuò)日志,kubernetes,容器,云原生
    目前看,可用量還是比較多的。節(jié)點(diǎn)內(nèi)存一共64G 可用量有13G
    然后問題就是內(nèi)存使用量了。然而一個(gè)節(jié)點(diǎn)上部署的應(yīng)用是不固定的,每個(gè)應(yīng)用占用的內(nèi)存大小也不是固定的。所以大概率還是節(jié)點(diǎn)上的內(nèi)存使用量超過閾值觸發(fā)了Kubernetes驅(qū)逐策略生效。

5.結(jié)論

最終本次故障的原因最終定位到:內(nèi)存使用量問題上。節(jié)點(diǎn)上的內(nèi)存使用量超過閾值觸發(fā)了Kubernetes驅(qū)逐策略生效。

優(yōu)化建議:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-618047.html

  • k8s配置調(diào)優(yōu):
    給每個(gè)應(yīng)用加上資源限制。K8s的調(diào)度策略是根據(jù)request和limit來(lái)判斷是否應(yīng)該調(diào)度到目標(biāo)節(jié)點(diǎn)。給關(guān)鍵節(jié)點(diǎn)配置親和與反親和。
  • Liunx系統(tǒng)參數(shù)調(diào)優(yōu):
    調(diào)高系統(tǒng)進(jìn)程id數(shù)量:/etc/sysctl.conf kernel.pid_max
    調(diào)高文件句柄數(shù):/etc/security/limits.conf
    限制一個(gè)進(jìn)程可以擁有的VMA(虛擬內(nèi)存區(qū)域)的數(shù)量:/etc/sysctl.conf max_map_count
    調(diào)整內(nèi)存分配策略:/etc/sysctl.conf vm.overcommit_memory:0 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用;如果有足夠的可用內(nèi)存,內(nèi)存申請(qǐng)?jiān)试S;否則,內(nèi)存申請(qǐng)失敗,并把錯(cuò)誤返回給應(yīng)用進(jìn)程。

到了這里,關(guān)于k8s服務(wù)突然中斷重啟原因排查-eviction manager: must evict pod(s) to reclaim memory的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 問題記錄:K8s中安裝calico,calico反復(fù)重啟,原因:版本未匹配

    問題記錄:K8s中安裝calico,calico反復(fù)重啟,原因:版本未匹配

    K8s版本1.23.6 calico-node-反復(fù)重啟,READY狀態(tài)一直為0,STATUS為CrashLoopBackOff, 查看節(jié)點(diǎn)日志 沒有錯(cuò)誤,只有info信息 但是一直反復(fù)重啟,導(dǎo)致coredns一直處于未準(zhǔn)備好狀態(tài) calico與k8s的版本未匹配 刪除calico,重新安裝對(duì)應(yīng)k8s版本 先刪除calico pod 刪掉calico.yaml文件 重新下載 k8s版本1.

    2024年02月09日
    瀏覽(26)
  • k8s 驅(qū)逐eviction機(jī)制源碼分析

    k8s 驅(qū)逐eviction機(jī)制源碼分析

    1. 驅(qū)逐概念介紹 kubelet會(huì)定期監(jiān)控node的內(nèi)存,磁盤,文件系統(tǒng)等資源,當(dāng)達(dá)到指定的閾值后,就會(huì)先嘗試回收node級(jí)別的資源,比如當(dāng)磁盤資源不足時(shí)會(huì)刪除不同的image,如果仍然在閾值之上就會(huì)開始驅(qū)逐pod來(lái)回收資源。 2. 驅(qū)逐信號(hào) kubelet定義了如下的驅(qū)逐信號(hào),當(dāng)驅(qū)逐信號(hào)達(dá)

    2024年02月12日
    瀏覽(11)
  • k8s重啟服務(wù)(kubectl)

    How to Restart Kubernetes Pods With Kubectl Deployments

    2024年02月11日
    瀏覽(22)
  • 清理k8s集群Evicted,F(xiàn)ailed的Pod!

    簡(jiǎn)介:不知知道各位是如何清理的,我嘗試過用阿里的任何一個(gè)面板清理,但是還要換頁(yè)就很煩,所以自己就寫了一個(gè)小腳本,更GOOD!的是你還可以把他放到你的定時(shí)任務(wù)里面去,為啥要這么做,不得不說(shuō),咱的集群有點(diǎn)小垃圾,不過那也沒辦法,集群也不敢動(dòng),誰(shuí)知道啥時(shí)

    2024年02月20日
    瀏覽(21)
  • 云原生 | k8s批量刪除Evicted/Terminating/Unknown Pods

    云原生 | k8s批量刪除Evicted/Terminating/Unknown Pods

    宿主機(jī)內(nèi)存被docker占滿導(dǎo)致,K8s集群pod處于Evicted?狀態(tài),清理內(nèi)存后處理Evicted和Terminating狀態(tài)的pod 1、在集群查詢pod狀態(tài),發(fā)現(xiàn)大量pod處于Evicted和Terminating狀態(tài) 2.使用kubectl中的強(qiáng)制刪除命令 3.刪除非正常的pod ?

    2024年02月08日
    瀏覽(19)
  • 云原生Kubernetes:K8S集群各組件服務(wù)重啟

    目錄 一、理論 1.各組件服務(wù)重啟命令 (1)Master節(jié)點(diǎn)+Node節(jié)點(diǎn)共同服務(wù) (2)Master節(jié)點(diǎn)獨(dú)有服務(wù) (3)Node節(jié)點(diǎn)獨(dú)有服務(wù)

    2024年02月03日
    瀏覽(35)
  • 重啟某個(gè)節(jié)點(diǎn)、重啟電腦服務(wù)器后,kubernetes無(wú)法運(yùn)行,k8s無(wú)法運(yùn)行

    環(huán)境:ubuntu18.04 LTS 現(xiàn)象:按步驟安裝kubernetes后,正常啟動(dòng),各個(gè)命令均可正常使用。服務(wù)器重啟后,執(zhí)行命令錯(cuò)誤信息如下: The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port? 排查防火墻設(shè)置 查看端口是否打開 如果無(wú)法連接,可以關(guān)閉防火墻 重新

    2024年02月05日
    瀏覽(34)
  • 虛擬機(jī)掛起/重啟后導(dǎo)致K8s網(wǎng)絡(luò)不通或服務(wù)啟動(dòng)后主節(jié)點(diǎn)無(wú)法訪問問題

    虛擬機(jī)掛起/重啟后導(dǎo)致K8s網(wǎng)絡(luò)不通或服務(wù)啟動(dòng)后主節(jié)點(diǎn)無(wú)法訪問問題

    3臺(tái)linux服務(wù)器搭建的一個(gè)?kubeadm-k8s 的集群環(huán)境,(1 Master 2 Worker),? 當(dāng)斷電或者虛擬機(jī)掛起恢復(fù)后出現(xiàn) service 訪問不了,pod之間ping不通或者集群搭建失敗問題,但是K8s集群還是正??梢詣?chuàng)建 deployment 以及調(diào)度 pod 到各個(gè) node 上, 并且 node都處于 ready 的狀態(tài)。 找到其中的?kube

    2024年02月08日
    瀏覽(42)
  • k8s kubelet 服務(wù)無(wú)法啟動(dòng)報(bào) code=exited, status=1/FAILURE錯(cuò)誤 多種原因及解決

    出現(xiàn)這種問題的原因有多種,如果status=255且反復(fù)重啟動(dòng)則是正常的,配置并創(chuàng)建pod后就好了。如果是status=1/FAILURE則可能是以下幾種問題 具體如下 1.證書過期導(dǎo)致kubelet無(wú)法正常起動(dòng)。 可以參考:k8s kubelet 服務(wù)無(wú)法啟動(dòng)報(bào) code=exited, status=1/FAILURE錯(cuò)誤_世寶寶的博客-CSDN博客_cod

    2024年01月18日
    瀏覽(17)
  • K8S故障排查

    K8S故障排查

    故障現(xiàn)象:部署pod時(shí),報(bào)錯(cuò)沒發(fā)調(diào)度到節(jié)點(diǎn)。 排查步驟: 1、查看集群的狀態(tài) 2、查看k8s組件的狀態(tài)-kubelet,kube-apiservice 3、查看docker的Cgroup driver和k8s的Cgroup driver類型,發(fā)現(xiàn)docker是cgroup,k8s是systemd,問題點(diǎn)找到了。

    2024年02月15日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包