func (kl *kubelet) syncloopiteration(configch
syncch
type podrecord struct
很簡單,就是記錄當前pod狀態和之前記錄狀態的兩個屬性。
func (g *genericpleg) relist()
}}//更新本地快取
g.updatecache(pod, pid)
g.podrecords.update(pid)
syncloopiteration這個事件的**說清楚了。具體看看syncloopiteration是怎樣執行的
func (kl *kubelet) syncloopiteration(configch
syncch
switch u.op
...mirrorpod, _ := kl.podmanager
.getmirrorpodbypod(pod)
kl.dispatchwork(pod, kubetypes.syncpodcreate, mirrorpod, start)
kl.probemanager
.addpod(pod)}}
上面的dispatchwork負責分發任務,具體看下圖
通過分發,最終呼叫,kubelet.go裡面的syncpod方法,
func (kl *kubelet) syncpod(o syncpodoptions) error
最終還是通過執行時syncpod去啟動容器,具體**在pkg/kubelet/kuberuntime/kuberuntime_manager.go裡面,
func
(m *kubegenericruntimemanager) syncpod
通過六個步驟
// 1. compute sandbox and container changes.
// 2. kill pod sandbox if necessary.
// 3. kill any containers that should not be running.
// 4. create sandbox if necessary.
// 5. create init containers.
// 6. create normal containers.
到了第六步才是啟動業務容器的**pkg/kubelet/kuberuntime/kuberuntime_container.go
func
(m *kubegenericruntimemanager)
startcontainer
它也是分為一下幾個步驟
// * pull the image
// * create the container
// * start the container
至此,容器啟動的**已經介紹完畢,但還有很多細節,譬如儲存掛載網路分配等細節,後面再慢慢闡述! kubelet 原始碼分析 啟動篇
在kubernetes集群中,每個node節點 又稱minion 上都會啟動乙個kubelet服務進行。該程序用於處理master節點下發到本節點的任務,管理pod及pod中的容器。每個kubelet程序會在api server上註冊節點自身資訊,定期向master節點匯報節點資源的使用情況,並通過...
STL原始碼剖析 POD型別
轉並改自 啥是pod型別?pod全稱plain old data。通俗的講,乙個類或結構體通過二進位制拷貝後還能保持其資料不變,那麼它就是乙個pod型別。平凡的定義 1.有平凡的建構函式 2.有平凡的拷貝建構函式 3.有平凡的移動建構函式 4.有平凡的拷貝賦值運算子 5.有平凡的移動賦值運算子 6....
Nacos原始碼一 原始碼啟動
一 nacos 原始碼本地啟動 官方單機啟動文件 將原始碼匯入到idea,然後開啟console專案中的配置檔案 按照nacos文件中單機啟動模式修改mysql配置 資料庫連線串需要有時區 useunicode true characterencoding utf8 servertimezone u...