一、引言
????????作者公司使用的是K8S底層做云計算,這天有個節(jié)點發(fā)布的時候卡住了,解決方式分為長短期。? ? ? ?
? ? ? ? 作者跟運(yùn)維做了一些分析討論和解決方案,涉及到許多K8S相關(guān)的知識,有興趣的同學(xué)可以看看這個原理分析過程。
二、云計算簡介
????云計算是一種基于互聯(lián)網(wǎng)的計算模式,它通過將計算資源和服務(wù)提供給用戶,以按需、彈性和可擴(kuò)展的方式滿足用戶的需求。
????傳統(tǒng)的計算模式通常需要用戶購買、配置和維護(hù)自己的硬件和軟件基礎(chǔ)設(shè)施,而云計算則將這些計算資源和服務(wù)集中在云服務(wù)提供商的數(shù)據(jù)中心中,用戶可以通過互聯(lián)網(wǎng)按需使用這些資源和服務(wù)。??
????云計算底層的進(jìn)化主要經(jīng)歷了虛擬機(jī)到Docker到Kubernetes
1、虛擬機(jī)(VM)
????虛擬機(jī)是一種基于軟件的虛擬化技術(shù),它可以將一臺物理計算機(jī)分割成多個虛擬計算機(jī),每個虛擬計算機(jī)都可以運(yùn)行獨立的操作系統(tǒng)和應(yīng)用程序。虛擬機(jī)技術(shù)可以實現(xiàn)硬件資源的共享和隔離,提高資源利用率和安全性。
2、Docker
??? Docker是一種基于容器的虛擬化技術(shù),它可以將應(yīng)用程序及其依賴項打包為一個獨立的容器,使得應(yīng)用程序可以在任何環(huán)境中運(yùn)行,而無需關(guān)心底層的操作系統(tǒng)和硬件。Docker技術(shù)可以實現(xiàn)應(yīng)用程序的快速部署、可移植性和隔離性。
3、Kubernetes(K8s)
??? Kubernetes是一種基于容器編排的平臺,它可以自動化地管理和調(diào)度容器化的應(yīng)用程序,提供了彈性伸縮、負(fù)載均衡、服務(wù)發(fā)現(xiàn)等功能。Kubernetes技術(shù)可以實現(xiàn)應(yīng)用程序的高可用性、彈性擴(kuò)展和自動化運(yùn)維。
????云計算從虛擬機(jī)到Docker到Kubernetes的過程,可以看作是從基于硬件的虛擬化技術(shù)向基于容器的虛擬化技術(shù)和容器編排平臺的演進(jìn)。這種演進(jìn)使得云計算更加靈活、高效和可擴(kuò)展,為應(yīng)用程序的開發(fā)、部署和運(yùn)維帶來了更多的便利和優(yōu)勢。
?三、分析
????????首先是分析目前節(jié)點的狀態(tài),可以看出不屬于以下幾種狀態(tài),說明節(jié)點處于一種前置未完成的初始化狀態(tài)。
? ? ? ? 那么k8s在pending之前需要等什么呢,這里能看出前置節(jié)奏還是挺多的,比如需要提供cri準(zhǔn)備容器所有的參數(shù)
?
? ? ? ? ?那么從參數(shù)方向入手先嘗試排查,一般自帶參數(shù)沒必要排查,不太可能是調(diào)度系統(tǒng)本身拉取參數(shù)失敗,因此向運(yùn)維詢問他們使用以下哪種方式掛載了額外的參數(shù)文件,這個參數(shù)文件又是做什么使用的。
? ? ? ? 運(yùn)維內(nèi)部進(jìn)行了溝通,運(yùn)維在istio的enovy中做了一些網(wǎng)關(guān)流量處理,參數(shù)是通過configmap方式掛載的。這里和報錯信息顯示掛載envoy的配置文件失敗一致。
? ? ? ? ?有了具體方向就要查為什么會產(chǎn)生這樣的錯誤了,按說cm作為業(yè)界常用的配置文件方式不應(yīng)該有這種問題,讓運(yùn)維把內(nèi)核日志和k8s日志考了一份,都能看出sysytemd掛載失敗,所以節(jié)點一直在等待systemd掛載成功
? ? ? ? ?再看之前的日志,這個問題出現(xiàn)不是一兩天了,在k8s、cri的社區(qū)都有人提出issue,但是最終都是要升級版本Check the Systemd is alive in kubelet · Issue #110763 · kubernetes/kubernetes · GitHub?
https://github.com/cri-o/cri-o/issues/3808
四、解決?
? ? ? ? 1、重建,臨時做法
????????2、升級,長期耗時還要調(diào)研
? ? ? ? 3、探測,這邊作者分析了一下為什么重建就能解決,調(diào)度到其他宿主機(jī)上去了,那么對于有問題的宿主機(jī)是不是可以進(jìn)行探測,然后設(shè)置調(diào)度算法規(guī)則過濾掉,在《深入理解k8s》中提到的第三種調(diào)度規(guī)則就是針對物理機(jī)的,那么可以更新node的Taint,把有問題的宿主機(jī)過濾掉
五、總結(jié)
????????云環(huán)境下的組件非常之多,隨時有版本不對應(yīng)或者升級解決bug的情況,這是非??拥氖虑?,碰到問題就要定位,最后就是升級。文章來源:http://www.zghlxwxcb.cn/news/detail-767410.html
????????但是做好探測,利用好k8s的調(diào)度規(guī)則還是可以提前規(guī)避掉許多問題的。文章來源地址http://www.zghlxwxcb.cn/news/detail-767410.html
到了這里,關(guān)于云計算(一)K8S初始化問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!